C语言中的“->”与"."运算符区别

(原文出处:http://www.basncy.com/2011-02-18001)
"->"与“."有什么区别呢?课堂上老师这样讲的:一个是地址,一个是引用。话是这么说了,具体怎么理解?而且放到C里面又应该怎么?至少直到现在,我也一直迷惑了两年。刚刚看到下面这段话,明白了。

运算符->是*和.的组合,先对node间接寻址,然后再选择结构成员value,即用node->value=10来代替(*node).value=10。(摘自《C语言程序设计:现代方法》)

所以->得到的应该是内存里的值,而不是地址,有这样的语句:scanf("%d",&node->value);对比int a;scanf("%d",&a)应该不难理解。

作者注:什么时候会用到(*node).value?请看以下代码:

struct teststruct{
int value;
struct *next;
}

struct teststruct *node;

node=(teststruct *)malloc(sizeof(struct teststruct));
(*node).value=10;

printf("%d",(*node).value);

free(node);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值