struct {int a[2];} arr[] = {{1},{2}};请简化上面的代码,特别是arr[] = {{1},{2}};部分,以及它与结构的关系。
- arr[] = {{1},{2}}初始化似乎是一个2d array,但是lvalue赋值是对1d array(arr[])进行的。再一次,如果我们调用a[2],arr[].a[2]将持有什么。
发布于 2019-11-08 08:50:45
struct {int a[2];} arr[] = {{1},{2}};到目前为止,上面的初始化是不完整的,您应该会看到下面的警告
warning: (near initialization for ‘arr[0].a’)正确的初始化是
struct {int a[2];} arr[] = {{{1}},{{2}}};1.
{ { {1} },{ {2} }}
---
|
--------------> is for int arr[0].a[0] // in this case arr[0].a[1] will be not be initialized
2
{ { {1} } , { {2} }}
------- ------
| |
| ----> is for arr[1]
--------------> is for arr[0]
3
{ { {1} } , { {2} }}
--------------------
|
------------------> is for complete arr[]发布于 2019-11-08 08:58:28
简化
struct {int a[2];} arr[] = {{1},{2}};
struct quux {
int a[2];
};
struct quux arr[2];
arr[0].a[0] = 1;
arr[0].a[1] = 0;
arr[1].a[0] = 2;
arr[1].a[1] = 0;https://stackoverflow.com/questions/58763109
复制相似问题