这个链接说,“当自动数组或结构体有部分初始化器时,其余部分将被初始化为0”。我决定尝试一下我所读到的,并编写了以下代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
//int arr[3] = {2}; // line no. 7
struct s {
int si;
int sj;
};
struct s myStruct;
myStruct.si = 9;
printf("%d\n", myStruct.sj);
}
当我注释掉第7行
并取消注释时,我不明白为什么会打印出4096
(我相信这是一些“垃圾”值),而我得到0
。我不认为arr
声明与main()
的激活记录(或者更确切地说是myStruct
)有关,它应该是这样的(假设我们已经取消注释了第7行
):
---------------
| Saved PC |
---------------
| arr[2] |
---------------
| arr[1] |
---------------
| arr[0] |
---------------
| si |
---------------
| sj |
---------------
有人能否解释一下我在这里缺失了什么?