#include <stdio.h>
struct ks
{
int a;
int *b;
}s[4],*p;
void main()
{
int n=1,i;
for(i=1;i<4;i++)
{
s[i].a=n;
s[i].b=&s[i].a;
n+=2;
}
p=&s[0];
p++;
printf("%d,%d\n",(++p)->a,*p->b);
}
我这边得到的结果是3,1,编译运行和调试结果一样。
(++p)->a不用加“*”,因为a是int类型。
p->b加“*”,因为b是int*类型,它是一个指针变量,保存的是地址。访问该地址上保存的值就要加“*”。
第一个数不可能会出现2 啊,n从1开始,每次+2,所以s[i].a都是奇数,不可能是偶数。
输出结果是3,3才对啊(可能部分编译器输出的是3,1,不同编译器有些差别)