q=p->p.tp; C语言中这样一句话该如何理解?p、q是广义表结点指针,结点里面有指针成员tp
发布网友
发布时间:2023-05-05 14:30
我来回答
共2个回答
热心网友
时间:2023-11-14 03:11
首先不看图,假设有以下定义
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
不知道您能理解我说的不。
热心网友
时间:2023-11-14 03:11
首先不看图,假设有以下定义
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
不知道您能理解我说的不。
热心网友
时间:2023-11-14 03:11
首先不看图,假设有以下定义
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
不知道您能理解我说的不。
热心网友
时间:2023-11-14 03:11
C语言当中应该没有这样的语法,应该是q=p->tp;应该是印刷错误
热心网友
时间:2023-11-14 03:11
C语言当中应该没有这样的语法,应该是q=p->tp;应该是印刷错误
热心网友
时间:2023-11-14 03:11
C语言当中应该没有这样的语法,应该是q=p->tp;应该是印刷错误