C语言 *++(++p)->y的意思struct{\x05\x05int x;\x05\x05char *y;\x05}tab[2]={1,"ab",2,"cd"},*p=tab;\x05\x05printf("%c",*++(++p)->y);输出“d”(++p)不是相当于p=p+1;然后就变成*++p->y,怎么还能输出d呢?希望说的仔细些,
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 20:18:55
![C语言 *++(++p)->y的意思struct{\x05\x05int x;\x05\x05char *y;\x05}tab[2]={1,](/uploads/image/z/6844530-66-0.jpg?t=C%E8%AF%AD%E8%A8%80+%2A%2B%2B%28%2B%2Bp%29-%3Ey%E7%9A%84%E6%84%8F%E6%80%9Dstruct%7B%5Cx05%5Cx05int+x%3B%5Cx05%5Cx05char+%2Ay%3B%5Cx05%7Dtab%5B2%5D%3D%7B1%2C%22ab%22%2C2%2C%22cd%22%7D%2C%2Ap%3Dtab%3B%5Cx05%5Cx05printf%28%22%25c%22%2C%2A%2B%2B%28%2B%2Bp%29-%3Ey%29%3B%E8%BE%93%E5%87%BA%E2%80%9Cd%E2%80%9D%EF%BC%88%2B%2Bp%EF%BC%89%E4%B8%8D%E6%98%AF%E7%9B%B8%E5%BD%93%E4%BA%8Ep%3Dp%2B1%3B%E7%84%B6%E5%90%8E%E5%B0%B1%E5%8F%98%E6%88%90%2A%2B%2Bp-%3Ey%2C%E6%80%8E%E4%B9%88%E8%BF%98%E8%83%BD%E8%BE%93%E5%87%BAd%E5%91%A2%3F%E5%B8%8C%E6%9C%9B%E8%AF%B4%E7%9A%84%E4%BB%94%E7%BB%86%E4%BA%9B%2C)
xRn@R+RE?FĕHbHRAQԍ@3VBav]f={8ϘyN.!1A|TmQhK.ۏxMάn%}W/s;)ċ/]9D\bGw3gԦʠx-m
KX
jn"3mRWAM
*MZc7ۛ݊)t:3swVu}-4By=5hC%ge#2 =)%q> }qr@*3ho-c:#=w2DD+,X
K?μ=? Ⱦ.M J$Ôij`1mV`Huf\){Cꍕ]7ڤciPr{`=78@- a8РhRZR"A3M
R
C语言 *++(++p)->y的意思struct{\x05\x05int x;\x05\x05char *y;\x05}tab[2]={1,"ab",2,"cd"},*p=tab;\x05\x05printf("%c",*++(++p)->y);输出“d”(++p)不是相当于p=p+1;然后就变成*++p->y,怎么还能输出d呢?希望说的仔细些,
C语言 *++(++p)->y的意思
struct{
\x05\x05int x;
\x05\x05char *y;
\x05}tab[2]={1,"ab",2,"cd"},*p=tab;
\x05
\x05printf("%c",*++(++p)->y);
输出“d”
(++p)不是相当于p=p+1;然后就变成*++p->y,怎么还能输出d呢?
希望说的仔细些,
C语言 *++(++p)->y的意思struct{\x05\x05int x;\x05\x05char *y;\x05}tab[2]={1,"ab",2,"cd"},*p=tab;\x05\x05printf("%c",*++(++p)->y);输出“d”(++p)不是相当于p=p+1;然后就变成*++p->y,怎么还能输出d呢?希望说的仔细些,
首先你要明确tab有两个元素,分别是一个结构体.第一个是1和ab,第二个是2和cd
执行步骤是这样的:
++p:导致p指向第二个结构体
p->y:取当前p指向的对象的成员y,即*(p->y) = c,注意是指向第一个元素c的
++(p->y):指针向后跳一个,指向d
*:取当前指针内的值d