我们如何理解一个类/结构体以及指针呢?
(我们不考虑重载运算符等高级操作)
一个类/结构体,由成员组成
一个类可以保含 0~多个数据成员和 0~多个成员函数
类/结构体,本身是一个类型,类似 int,float,double,long long, char 等
比如
struct A {
int 数据成员 1;
void 成员函数 1(/*参数*/) {
/*参数*/
}
} b; //这里可以不声明一个对象,但分号不能省略
A c;
int main() {
A b;
}
"." 表示 "的" ,比如 苹果 a.颜色; 人 1.吃(苹果 a);
"&" 表示 取地址(作为运算),或者引用(在声明时)
比如 scanf("%d", &苹果 a.重量); //取地址
int a = 5, &b = a; // 此处 b 是 a 的引用,即给 a 一个别名 b,两者其实是一个
变量
"*"表示取出指针的对象(作为运算),或者指针(在声明时)
比 如 int * pointer_to_a = &a;// 声 明 了 一 个 指 向 int 的 指 针 类 型 变 量
pointer_to_a,并将&a 作为初值赋给它
此时表达式 (*pointer_to_a) 和 a 完全等价 //*作为运算
“->”取出指针指向对象的成员
"指针->数据成员" 和 "(*指针).数据成员" 完全等价
"指针->成员函数(参数列表)" 和 "(*指针).成员函数(参数列表)" 完全等价
但和(*指针)->成员 以及*指针->成员不等价
struct 人 {
int 重量;
void 吃(苹果 &目标苹果) {//因为是引用,所以和参数中的苹果完全一致
重量 += 目标苹果.重量;
目标苹果.重量 = 0;
}
void 凭空吃(苹果 目标苹果) {//这里的目标苹果是被复制过来的一个局
评论0