问题遇到的现象和发生背景
(单选题)下面给出两个struct A1和struct A2的结构,以及部分代码:
struct A1 {int *items;
int val0;
int val1;
int val2;
};
struct A2 {
int items[0];
int val0;
int val1;
int val2;
};
A1 a1;
a1.items=&(a1.val0);
a1.items[0] = 1;
a1.items[1] = 2;
a1.items[2] = 3;
A2 a2;
a2.items[0] = 11;
a2.items[1] = 12;
a2.items[2] = 13;
对于下面给出的四个逻辑表达式,
sizeof(A1)>sizeof(A2)
a1.val0 ==1
a2.val0 == 11
*(a2.items+1)==12
若不考虑编译时的警告信息和内存对齐方式,则正确说法的是:
A. 1,2,3为真,4为假
B.
1为真,2,3,4为假
C.
2,3,4为真,1为假
D. 1,2,3,4均为真