“->”是一个整体,它主要用于指向结构体、C++中的class等含有子数据的指针用来取子数据。
换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”。
举例:
struct Data
{int a,b,c;}; ——定义结构体
struct Data * p; ——定义结构体指针
struct Data A = {1,2,3}; ——声明变量A
int x; ——声明一个变量x
p = &A ; ——让p指向A
x = p->a; ——取出p所指向的结构体中包含的数据项a赋值给x
由于此时p指向A,因而 p->a == A.a,也就是1。
对于一开始的问题 p = p->next,这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct Data
{int a;struct Data * next;};
main()
{struct Data * p;
p = p->next;
}