如下代码:
#include<stdio.h>
typedef struct{
int *table[5];
}AAAA;
typedef struct{
AAAA value;
}BBBBB;
int main()
{
BBBBB b1 = {};
int a[5] = {1,2,3,4,5};
int i=0;
for(;i<5;i++)
{
b1.value.table[i] = &a[i];
}
printf("%d\n", *(b1.value.table[2]) );
printf("%d\n", *(b1) .value.table[4] );
return 0;
}
两个打印都是正确的!
*的分析思路应该是从左往右找到一个完整的结构, 取的实际上是: (b1). value.table[4]
在多加一个括号:
printf("%d\n", (*(b1).value).table[4] )
就会有报错了