gpt4 book ai didi

c - 使用自身元素初始化数组的一些问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:11 27 4
gpt4 key购买 nike

用我的话来说,我用自己初始化数组。像这样,然后打印它:

int a[10] =
{
a[0], a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]
};
int i = 0;
for(i = 0; i <10; i++)
{
printf("a[%d] = 0x%x \r\n",i,a[i]);
}

它显示:

a[0] = 0x4300eb50  
a[1] = 0x7f10
a[2] = 0x0
a[3] = 0x0
a[4] = 0x9c76b200
a[5] = 0x55c1
a[6] = 0x9c76b060
a[7] = 0x55c1
a[8] = 0x93785430
a[9] = 0x7ffc

我不明白它是如何工作的。为什么我可以用它自己的元素初始化数组?

最佳答案

C 中的变量定义分两步:

  1. 声明和定义(编译器分配的空间)
  2. 初始化(可选)

简单的 int a[10] 足以将变量 a 声明和定义为十个 int 元素的数组。如果在函数内局部声明(作为自动变量),则数组的内容将不确定并且看起来是随机的。

当你在初始化中使用数组本身时(因为变量已经被定义),然后你用数组本身的不确定数据初始化它。等于根本不初始化数组。

对于整数类型,这通常工作正常,但如果数据包含具有陷阱条件的值(这可能发生在其他类型上),那么使用它们会导致未定义的行为

关于c - 使用自身元素初始化数组的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54342985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com