指针;数组的简单分配
Pointers; Simple Allocation of An Array
>我在"int dArray[size]"下收到一个错误,说大小需要是一个常量。有人可以解释一下这到底是什么意思吗?
我希望它是一个大小为 4 的数组,输出 1、3、5 和 7。
#include <iostream>
using namespace std;
int *AllocateArray(int size, int value){
int dArray[size];
for (int i = 0; i <= size; i++){
dArray[i] = value;
value + 2;
}
}
int main(){
AllocateArray(4, 1);
}
解决:
这是最终工作的代码。
#include <iostream>
using namespace std;
int *AllocateArray(int size, int value){
int * Array = new int[size];
for (int i = 0; i < size; i++){
Array[i] = value;
value = value + 2;
}
for (int i = 0; i < size; i++){
cout << Array[i] << endl;
}
return Array;
}
int main(){
int *dArray = AllocateArray(4, 1);
}
在int dArray[size]
中,大小不是一个常量值。 因此,您会收到该错误。 您可能想做的是使用指针和新数组创建一个新数组:
int * dArray = new int[size];
C++要求在编译时确定数组的大小。由于size
是在运行时确定的,编译器会抱怨。
如果您对编译时大小未知的类似数组的行为感兴趣,请考虑使用 std::vector
.
数组
的大小应该是编译时的已知常量,以便编译器可以为堆栈上的该数组分配正确的内存。请记住,这样的声明是针对堆栈变量的。如果你确实想要动态数组,试试 std::vector。
您必须使用数字、#define 或const unsigned int
声明数组的大小。 否则,它们被视为可变长度数组。
例:
const unsigned int MAX_ARRAY_SIZE = 14;
double my_array[MAX_ARRAY_SIZE];
相关文章:
- 将数组的地址分配给变量并删除
- 在c++中用vector填充一个简单的动态数组
- vector.resize()中的分配错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 将字符从一个字符串简单分配到另一个字符串不起作用
- 特征库,简单的线性代数操作,具有稀疏的矩阵,增加了其分配的尺寸
- 简单的字符串分配导致分割故障
- 一个简单的向量,如何正确重新分配新数组的地址
- 指针;数组的简单分配
- c ++新的C数组分配,RAII或简单的shared_ptr/boost::shared_array
- 通过为每个字母分配(新)值在简单加密中使用数组
- 视觉对象C++窗体、简单消息框和将文本从文本字段分配给字符串时出错
- 在Win/Linux上使用C/C++分配内存的最简单方法是什么
- 给我的程序分配图标最简单的方法是什么
- 简单的数组内存分配与大小动态分配和预定的大小
- Try/catch块用于在构造函数内部将简单内存分配到公共原始指针
- 我可以简单地在分配的内存上调用构造函数,而不是放置new
- 0xfeeeee分段错误,只是简单的分配改变
- 有没有一种简单的方法来分配结构数组
- 如何简单地分配不同结构的向量