c - 普通数组也是动态的吗?

标签 c arrays

<分区>

以下是我的C代码

main(){

    int a[1];
    a[0]=10;
    a[1]=12;
    printf("%d\n",a[1]);
    copy_arr(a);
    printf("%d",a[1]);
}

下面是输出

12
12

它不应该给出数组越界之类的吗?

或者上面的代码是否依赖于编译器?

我在 gcc 编译器中运行上面的代码。

最佳答案

C 中没有自动数组边界检查。您的代码有未定义的行为 (UB)。这意味着它有时看起来“有效”。但是你不能依赖任何特定的结果。带有 UB 的程序是损坏的程序。

关于c - 普通数组也是动态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27997734/

相关文章:

在C中将IP号的每个部分转换为三位数

c - 从 shell dbus-send 在 C 中调用 dbus

C - 返回值错误

对 K&R 的 "The C Programming Language"中有关 char 和 int 类型的段落的理解感到困惑

php - 如何将一组选中/未选中的复选框值传递给 PHP 电子邮件生成器?

c - fread_s 期间结构填充不正确

c - 如何找出数组中有多少个数字

java - 如何求数组中每个元素获得某个随机变量的概率?

javascript - 使用 JS 从数组中弹出元素

java - 将 arraylist 的范围转换为字符串数组