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/12/18 19:15:58
C语言*++(++p)->y的意思struct{\x05\x05intx;\x05\x05char*y;\x05}tab[2]={1,"ab",2,"cd"},*p=tab;\x05\x05print

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