`
Linpro
  • 浏览: 3280 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

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);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics