之前我曾尝试使用C ++中的变量定义数组大小,虽然我不完全理解动态内存的概念,但我还是运行了。但是,在这种情况下,我不知道如何对数组'point'做同样的事情。
num=50;
struct pos
{
double x;
};
struct pos point[num];
有什么明显我在俯视吗?
答案 0 :(得分:4)
这些类型的数组大小必须是编译时常量,因此编译器知道要保留多少内存。
int count = 50;
int arr[count] // error!
static const int count = 50;
int arr[count]; // OK!
另一个选项是动态分配的内存,其中大小在运行时已知。
int count = 50;
int* arr = new int[count];
delete [] arr;
但是,通常你不想自己处理原始指针和内存分配,而应该更喜欢:
#include <vector>
int count = 50;
std::vector<int> arr(count);
这也适用于您提供的任何可复制的自定义类型(提示:您的示例pos
结构是可复制的):
#include <vector>
int count = 50;
std::vector<pos> arr(count);
arr[0].x = 1;
// ... etc
arr[49].x = 49;
std::vector
具有丰富的界面和所有详细信息can be found here