添加到 C/C++ 中没有大小的数组
Adding to an Array in C/C++ with no size
以下代码编译并输出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);
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '