C语言中:
我们临时定义一个结构体:
struct StuInfo{
int num;
char name[20];
char sex;
float score;
};
//初始化两个结构体类型的变量,和一个指向定义结构体类型的指针变量
struct StuInfo student1;
struct StuInfo Student2;
struct StuInfo* ptr;
//初始化指向结构体类型的指针变量
ptr = &Student2;
访问这两个结构体成员时,用成员运算符还是指针运算符:
student1是一个StuInfo结构体类型的变量,引用它时只能用成员运算符(.)即:
student1.num ,student1.sex等;
ptr 是一个指向StuInfo结构体类型的指针变量,注意它是指针变量,故按传统方式访问它的成员时,我们可以用解除引用运算符(C++中定义,相应的引用运算符为&)访问成员:(*ptr).num, (*ptr).score等,注意*ptr要括起来,因为所有运算符优先级中成员运算符(.)的优先级最高,这样是不是很不方便,也容易出错,为了方便和直观,C语言规定可以用指针运算符(-〉,有些书中称为指向运算符,但我觉得指针运算符更确切些。)代替,即
ptr->num, ptr->name, ptr->sex等,这样方便了很多。
C++中:
其实和C差不多,只是C++中除了结构体之外还多了类的概念。
Class Human {
//Data attributes:
string Name;
string BirthDay;
string Gender;
//Method:
void Talking(string TalkContent);
void IntroduceSelf();
...
};
Human Tom;
Human* p;
p = &Tom;
Tom.BirthDay = "1969“;
Tom.IntroduceSelf();
效果等价于:
p->BirthDay = "1969";
p->IntroduceSelf();