q=p->p.tp; C语言中这样一句话该如何理解?p、q是广义表结点指针,结点里面有指针成员tp

如题所述

首先不看图,假设有以下定义

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

不知道您能理解我说的不。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-02-27
C语言当中应该没有这样的语法,应该是q=p->tp;应该是印刷错误
相似回答