选择以下程序的最佳陈述:
#include "stdio.h"
int main()
{
struct {int a[2];} arr[] = {{1},{2}};
printf("%d %d %d %d",arr[0].a[0],arr[0].a[1],arr[1].a[0],arr[1].a[1]);
return 0;
}
(A)编译错误,因为使用结构类型错误地定义了arr。应该使用标签定义第一个结构类型,然后使用该标签定义arr。
(B)编译错误,因为除了arr的定义外,另一个问题是结构数组即arr []的初始化。
(C)由于初始化结构数组即arr []而导致编译错误。
(D)没有编译错误,它将显示1 2 0 0
(E)没有编译错误,它将显示1 0 2 0答案: (E)
说明:在这里,结构类型定义和使用该结构类型的arr定义已在同一行中完成。按照C标准,这没关系。即使初始化也是正确的。需要注意的一点是,arr []的数组大小为2,即此结构类型的此数组的2个元素。这是由于上面的初始化方式所决定的。此处,arr [0] .a [0]将为1,arr [1] .a [0]将为2。数组的其余元素将为零。正确答案是E。这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。