在C++中正确定义数组
Properly defining arrays in C++
我试图为float定义一个未知大小的数组,但不了解malloc()函数的工作原理,有人能告诉我它应该是什么样子以及它是如何工作的吗?
根据这里的输入代码,我知道它应该看起来像
float * input;
input = new float [];
但我得到错误:"input"没有命名一个类型
要在C++中分配数组,请使用:
size_t array_size = 1024 //Or whatever you need
float* input = new float[array_size]
//... Do some things...
delete[] input
但是,既然您使用的是C++,那么只需使用std::vector
,就不用担心删除任何数组:
std::vector<float> input;
input.push_back(10.2) //Add more things this way, or reserve ahead of time.
严格来说,您不能"分配一个未确定大小的数组"。在C/C++中,您只能定义一个指向内存区域(即数组的底层实现)的指针:
float* input;
在这一点上,您所拥有的只是一个指向浮点型数据的指针,该指针不指向任何内容,因此,在使用新关键字(仅限C++)为数组实际分配内存之前,您不能"使用"该数组:
input = new float[1024];
请注意,必须指定要分配的数组的长度,所以不能使用长度不确定的数组。如果你想使用一个像容器一样的结构,并且增长速度很快,可以考虑请改用std::list或std::vector。
如果你在编译时知道数组的大小,你就可以静态地定义数组,而不需要动态的内存分配:
float input[1024];
这样,数组将在堆栈上,而不是在堆上,并且当变量超出范围时,它将像通常的变量一样弹出。
相关文章:
- C++编程从外部文本文件定义数组大小
- 如何在子类中重新定义数组大小?
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 我可以使用常量定义数组的长度,那么为什么 int d[b] 不起作用呢?
- 表达式必须具有常数值,变量不能用作定义数组大小的常数
- 在类中定义数组的方法和字段
- (C++)我的自定义数组无法初始化(编译错误)
- 重写自定义数组类的运算符/开始/结束
- 如何在 C++ 中定义数组数组
- 您可以在类初始化器列表中定义数组大小吗?
- 通过Overloading Operator []访问自定义数组包装器中的元素
- 为自定义数组实现迭代器
- 递归定义数组中的数据对齐和排序
- 如何从类中返回自定义数组项目并操纵其属性?C
- 如何使用类 .h 文件中的静态常量来定义数组的长度
- 使用类定义数组创建C++类
- C++自定义数组容器动态大小
- C++中使用什么类型来定义数组大小
- 在源文件中定义数组,然后在其他源文件中使用它
- C 编程从外部输入文件定义数组大小