【发布时间】:2016-09-29 14:51:12
【问题描述】:
link 声明“当自动数组或结构具有部分初始化器时,其余部分被初始化为 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);
}
我不明白为什么当我注释掉line no. 7 时会打印4096(我认为这是一些“垃圾”值),而当我取消注释line no. 7 时会得到0。我认为arr 声明与main() 的激活记录(或者更确切地说myStruct)无关,它应该看起来像(假设我们有line no. 7 未注释):
---------------
| Saved PC |
---------------
| arr[2] |
---------------
| arr[1] |
---------------
| arr[0] |
---------------
| si |
---------------
| sj |
---------------
有人可以解释一下我在这里缺少什么吗?
【问题讨论】:
标签: c struct initialization variable-assignment