3195318731 发表于 2021-6-2 17:59:58

结构题指针问题,求助,大神!

struct
{
int x;
int y;
}s={{1,2},{3,4}},*p=s;
则:表达式 ++p->x的结果是多少?
答案是2

提问:那个表达式结合上面的结构体该怎么去解释?求助!

wp231957 发表于 2021-6-2 18:07:36

p->x不就是1吗,在++就是2

肖-肖 发表于 2021-6-2 18:08:38

本帖最后由 肖-肖 于 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)的

3195318731 发表于 2021-6-2 18:14:40

肖-肖 发表于 2021-6-2 18:08
s={{1,2},{3,4}},*p=s;
前半部分的:s={{1,2},{3,4}}--》是说:定义了一个结构体数组,结构体数组中可 ...

p->x,这个能帮我解释解释吗,这个它为什么指向的是1而不是3?
谢谢!

肖-肖 发表于 2021-6-2 18:18:06

3195318731 发表于 2021-6-2 18:14
p->x,这个能帮我解释解释吗,这个它为什么指向的是1而不是3?
谢谢!

因为p->x,p箭头x,x呀
{1,2}对应着上面的x,和y呀
所以就是1了

3195318731 发表于 2021-6-2 18:18:35

wp231957 发表于 2021-6-2 18:07
p->x不就是1吗,在++就是2

*p=s,这个是因为指针变量p指向了s这个数组的首地址s吗?
谢谢!

肖-肖 发表于 2021-6-2 18:19:03

3195318731 发表于 2021-6-2 18:18
*p=s,这个是因为指针变量p指向了s这个数组的首地址s吗?
谢谢!

是的 很正确

3195318731 发表于 2021-6-2 18:21:39

肖-肖 发表于 2021-6-2 18:19
是的 很正确

谢谢你{:5_91:}

肖-肖 发表于 2021-6-2 18:27:53

3195318731 发表于 2021-6-2 18:21
谢谢你

不客气 哈哈
页: [1]
查看完整版本: 结构题指针问题,求助,大神!