C语言中的“->”与""运算符差异
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);
(原文出处: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);