添加到 C/C++ 中没有大小的数组

Adding to an Array in C/C++ with no size

本文关键字:数组 C++ 添加      更新时间:2023-10-16

以下代码编译并输出6

#include <stdio.h>
int main(){
 int a[]={};
 a[0] = 5;
 a[1] = 6;
 printf("%dn", a[1]);
 return 0;
}

这是正确的还是我进入了未定义的行为,并且这段代码很幸运?我可以添加到没有大小的数组中吗?

int a[]={};

程序格式不正确。可能没有具有本地(或静态(存储的大小为 0 的数组。(允许使用零大小的动态数组,尽管我还没有找到它们的用处(。

我是否陷入了未定义的行为

a[0] = 5;
a[1] = 6;

您可以访问数组边界之外的元素。程序的行为是未定义的。

添加到数组

我可以添加到数组中吗?

无法向数组中添加元素。数组的大小在其整个生命周期中保持不变。

您可以做的是动态创建一个更大的新数组,并将元素从旧数组复制到新数组。有一个标准容器可以实现这一点:std::vector

这是一个

UB。

堆栈中的数组也不是一个好主意,请改用矢量。

std::vector<int> vec = {};
vec.push_back(5);