c 语言,结构体,取首地址,


struct  AC
{
int a[10];
int c;
};

struct  ABC
{
struct AC  ac[10];
int B[10];
};
struct ABC  L;

X= L.ac[3].a;  
Y =(&L.ac[3]);  

通过(*)(X++)可以取到ac[3]的a[0]到c的值,但是在取c的值时编译器就会报超界的警告看着不舒服

通过(*)(Y++)就不是取ac[3]的a[0]到c的值,好像是指向了ac[4],不太清楚,
有什么不用AC中元素的地址(报警告,看着太别扭了),取结构体AC的首地址的方法吗?

ac是结构体AC的数组。那么每个ac元素都是结构体AC的变量,你要哪个变量的首地址呢?
取首地址可以是 Y = L.ac + i; i表示你要去的ac数组中第i个ac变量

L.ac就是结构体AC的首地址啊。
&L.ac[3]是结构体数组第4个元素的地址。

我想通过增加Y的值来取到L.ac[3].a[0]---L.ac[3].c的值
解决方法找到了:Y=(int *)(&L.ac[3])