c++ - 使用结构中的变量定义数组大小

标签 c++ struct dynamic-memory-allocation

我之前尝试过用 C++ 中的变量定义数组大小,虽然我不完全理解动态内存的概念,但我成功了。但是,在这种情况下,我不知道如何对数组“point”做同样的事情。

num=50;
struct pos
{
double x;
};

 struct pos point[num]; 

有什么明显的我忽略了吗?

最佳答案

这些类型的数组大小必须是编译时常量,因此编译器知道要保留多少内存。

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 有一个丰富的接口(interface),所有的细节can be found here

关于c++ - 使用结构中的变量定义数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13574345/

相关文章:

c++ - 实现 C++ 后缀增量运算符

java - 关于for(),为什么使用i++而不是++i?

c - 为什么 CGPoint 声明了两次?

c - 带有 typedef 的结构并声明一个函数

c++ - 我可以删除以前动态分配但指针不同的内存吗?

c++ - 如何正确释放一组指针?

C++ - 使用 vector 清理堆上类的正确方法

c++ - 为什么 std::copy_n 采用模板参数而不是 std::size_t?

c - 从数据结构中释放内存

c - 指针堆分配如何为 C 中的结构分配足够的空间?