C/C++中的成员运算符(.)和指针运算符(->)

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();



  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值