C程序分配超出数组长度限制的值

web*_*ker -2 c arrays

以下代码将打印arr[1]arr[5].

int arr[5], i=0;
while(i<5){
    arr[i]=++i;
    printf("%d, ", arr[i]);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是一个固定长度的数组:我们可以在没有任何限制的情况下添加一个新元素吗?

Sad*_*que 6

我们可以在没有任何限制的情况下添加新元素吗?

不,你不能那样做.数组是你在问题中提到的固定大小,固定的东西意味着它不能被改变.如果需要可以增长的数据结构,可以创建链接列表.

此代码也调用未定义的行为:

arr[i]=++i;
Run Code Online (Sandbox Code Playgroud)

请仔细阅读 - 为什么这些构造是未定义的行为?

  • @webrocker:不,C不是禁止的.如果你想要一种语言可以保护你免受错误的影响,你就会得到错误的语言(Pascal,Modula-N,Oberon ......)会给你一定的检查;即使C++可以使用数组类 - 但C不会).这就是安全人员反对C的原因.编译器相信你知道你在做什么. (2认同)