c语言中指针中 -> 和 。的区别?

来源:互联网 发布:java链接转换短网址 编辑:程序博客网 时间:2024/06/16 22:00
c语言中指针中 -> 和 。的区别?

例子1:比如有如下结构
typedef strut node{

   int data;
  strut node * next;

} ListNode;
ListNode * p=(ListNode *) malloc(sizeof(ListNode));

上面语句中涉及到指针变量和结点变量两个概念:

(1)变量p 是ListNode *  类型的指针变量 p的值指向某一个结点的地址p所指向的(ListNode *) malloc(sizeof(ListNode));就是结点变量p是指针,
如果是 *p就表示结点变量,结点变量实际就是变量本身要访问成员,比如data 可以直接(*p).data


(2)如果用指针访问结构内成语必须用p->data


例子2:
->   指针变量
.    常规变量

X* px = new X(); px 是指针,防问任何变量或函数都用  px->开头
X x;    则 用 x. 开头