gpt4 book ai didi

c - 当我违反数组大小限制时,为什么我没有收到 OutOfBounds 异常(如 Java 异常)或 C 中的任何其他错误?

转载 作者:行者123 更新时间:2023-11-30 18:40:50 26 4
gpt4 key购买 nike

我对下面的 C 代码感到好奇

int main(){

int arr[10];
*(arr+120) = 5;
int *px = arr;
int i = 0;
for(i = 0; *px != 5; px++){
i++;
}

printf("%d", i);
}

此代码产生的输出为 120。据说我们的数组可容纳 10 个项目。如果可能存在某种错误,如何为索引 120 分配一些值,运行循环并获取我的值。可能我没有得到一些 C 语言的细节。在java中我会得到OutOfBounds异常......请帮忙澄清一下。谢谢!

最佳答案

C 不检查数组边界,访问数组外元素的代码是未定义的行为,这意味着任何事情都可能发生 - 包括您得到的结果。

关于c - 当我违反数组大小限制时,为什么我没有收到 OutOfBounds 异常(如 Java 异常)或 C 中的任何其他错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24741041/

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