首先不看图,假设有以下定义
struct type1 {
struct type2 p;
};
struct type2 {
int tp;
};
int q;
struct type1 *p = (struct type1 *) malloc (sizeof (struct type1);
//对tp赋值
p->p.tp = 0;
//赋值tp值给q
q = p->p.tp;
结构体的定义我就不说了,->和.操作符都是访问结构体中的内容,当变量是指针时,访问其中的元素需要使用->,否则使用.
从上面表达式来看,我们要访问tp,首先得访问P中得p,然后再能访问tp,这里p是指针,刚才说了指针用->,所以访问p中得p元素是p->p,这时p->p是非指针,所以使用.操作符,那么访问tp就是p->p.tp
不知道您能理解我说的不。