在C语言中遍历数组
我的代码如下所示:在C语言中遍历数组,c,arrays,loops,C,Arrays,Loops,我的代码如下所示: void main() { int vect[10], i; for (i=0; i<5; i++) vect[i] = i*2; printf("Vector: "); for (i=0; i<10; i++) printf("%d ", vect[i]); printf("\n"); void main() { int-vect[10],i; 对于(i=0;iint-vect[1
void main()
{
int vect[10], i;
for (i=0; i<5; i++)
vect[i] = i*2;
printf("Vector: ");
for (i=0; i<10; i++)
printf("%d ", vect[i]);
printf("\n");
void main()
{
int-vect[10],i;
对于(i=0;iint-vect[10]
索引5-9未初始化-您需要为它们分配一些内容,否则它们将(可能)返回垃圾,因为这是未定义的行为()。您还可以将vect
定义为静态,即静态int-vect[10]
,因为静态变量将自动初始化为0,而静态int数组的所有元素都将自动初始化为0。int-vect[10]
索引5-9未初始化-您需要为它们分配一些内容,否则它们将(可能)返回垃圾,因为这是未定义的行为()。您还可以将vect
定义为静态,即static int-vect[10]
,因为静态变量将自动初始化为0,静态int数组的所有元素将自动初始化为0。在代码中,vect
是一个自动局部数组,在定义时不会显式初始化。因此,此时,所有元素值都是不确定的
引用第§6.7.9章C11
如果没有显式初始化具有自动存储持续时间的对象,则其值为
不确定。[…]
在第一个for循环中,仅初始化5个元素,其余元素未初始化,并且它们包含不确定的值
尝试读取不确定的值调用
相关,附录J,相同标准,用于未定义的行为
具有自动存储持续时间的对象的值将在其运行时使用
不确定
一旦您的程序显示UB,就无法保证任何内容
FWIW,
void main()
至少应该是int main(void)
在代码中,vect
是一个自动本地数组,在定义时不会显式初始化。因此,此时,所有元素值都是不确定的
引用第§6.7.9章C11
如果没有显式初始化具有自动存储持续时间的对象,则其值为
不确定。[…]
在第一个for循环中,仅初始化5个元素,其余元素未初始化,并且它们包含不确定的值
尝试读取不确定的值调用
相关,附录J,相同标准,用于未定义的行为
具有自动存储持续时间的对象的值将在其运行时使用
不确定
一旦您的程序显示UB,就无法保证任何内容
FWIW,
void main()
至少应该是int main(void)
您知道int vect[10]
未初始化吗?您设置了前5个元素,接下来的5个元素仍然有不确定的值。您无法对其他5个元素得出任何结论或解释。您可以使用int vect[10]={0}
将向量初始化为全零。因此我不能在不初始化所有元素的情况下设置X元素的向量?如果我想创建一个向量,并且它们不断向其中添加元素,只对初始化的元素进行迭代,我是否应该改为使用列表@WeatherVane@Xayide可以,但问题是您正在引用您拥有的元素e没有初始化,。然后问为什么未定义的行为会显示它的功能。@Xayide这不是一个列表,而是一个数组。C本质上没有列表,你必须自己创建。你知道int vect[10]
未初始化?您设置了前5个元素,接下来的5个元素仍然有不确定的值。您无法对其他5个元素得出任何结论或解释。您可以使用int-vect[10]={0}
将向量初始化为全零。因此我不能在不初始化所有元素的情况下设置X元素的向量?如果我想创建一个向量,并且它们不断向其中添加元素,只对初始化的元素进行迭代,我是否应该改为使用列表@WeatherVane@Xayide可以,但问题是您正在引用您拥有的元素e没有初始化,。然后问为什么未定义的行为会显示它的功能。@Xayide这不是一个列表,它是一个数组。C本质上没有列表,你必须自己制作。干杯,这个出色的响应帮助我解决了一个非常困难的问题。干杯,这个出色的响应帮助我解决了一个非常困难的问题我遇到了一个棘手的问题。