gpt4 book ai didi

c - For循环缺少段错误的几个索引

转载 作者:太空狗 更新时间:2023-10-29 14:50:51 25 4
gpt4 key购买 nike

应用程序的输出(底部)如下:

元素索引号:0 元素内容:22
元素索引号:1 元素内容:22
元素索引号:2 元素内容:22
元素索引号:3 元素内容:22
元素索引号:4 元素内容:22
元素索引号:22 元素内容:134513712

为什么标记为 5 - 21 的索引元素被遗漏了?我知道这段代码可能会由于数组的边界溢出而发生段错误,它就是为此而设计的,我对为什么这段代码不好,只是为什么跳过某些索引不感兴趣。

#include <stdio.h>
int main(){

int array[5];

int i;
for(i=0; i<10; ++i) {
array[i] = 22;
printf("Element index number: %d Element contents: %d\n", i, array[i]);
}
return 0;
}

最佳答案

一旦您溢出分配的内存,您就处于“未定义的领域”。可能是数组写入写入了“i”在堆栈中的存储位置。

请注意,与 Java 和 C# 等语言不同,C 不进行运行时边界检查,因此当您溢出数组或字符串或 malloc 内存时,不能保证它会做任何有用的事情(如段错误)。它不能保证做任何事情。它可能会崩溃,也可能会继续运行,it could cause demons to fly out your nose .

关于c - For循环缺少段错误的几个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936029/

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