结构题指针问题,求助,大神!
struct{
int x;
int y;
}s={{1,2},{3,4}},*p=s;
则:表达式 ++p->x的结果是多少?
答案是2
提问:那个表达式结合上面的结构体该怎么去解释?求助!
p->x不就是1吗,在++就是2 本帖最后由 肖-肖 于 2021-6-2 18:12 编辑
s={{1,2},{3,4}},*p=s;
前半部分的:s={{1,2},{3,4}}--》是说:定义了一个结构体数组,结构体数组中可以看成有两个结构体。
s和s
后半部分是*p=s-->意思是定义了一个结构体指针变量指向这个结构体数组
然后是--》表达式 ++p->x
先是:p->x
此时的值为1
然后++
就变成2了
至于为什么先->后++是因为:->(优先级为1)的优先级高于++(优先级为2)的
肖-肖 发表于 2021-6-2 18:08
s={{1,2},{3,4}},*p=s;
前半部分的:s={{1,2},{3,4}}--》是说:定义了一个结构体数组,结构体数组中可 ...
p->x,这个能帮我解释解释吗,这个它为什么指向的是1而不是3?
谢谢! 3195318731 发表于 2021-6-2 18:14
p->x,这个能帮我解释解释吗,这个它为什么指向的是1而不是3?
谢谢!
因为p->x,p箭头x,x呀
{1,2}对应着上面的x,和y呀
所以就是1了 wp231957 发表于 2021-6-2 18:07
p->x不就是1吗,在++就是2
*p=s,这个是因为指针变量p指向了s这个数组的首地址s吗?
谢谢! 3195318731 发表于 2021-6-2 18:18
*p=s,这个是因为指针变量p指向了s这个数组的首地址s吗?
谢谢!
是的 很正确 肖-肖 发表于 2021-6-2 18:19
是的 很正确
谢谢你{:5_91:} 3195318731 发表于 2021-6-2 18:21
谢谢你
不客气 哈哈
页:
[1]