指针;数组的简单分配

Pointers; Simple Allocation of An Array

本文关键字:简单 分配 数组 指针      更新时间:2023-10-16

>我在"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];