在C ++中正确定义数组

时间:2014-04-30 02:05:16

标签: c++ arrays variables

我正在尝试为浮点数定义一个未知大小的数组但是不了解malloc()函数的工作原理,有人能告诉我它应该是什么样子以及它是如何工作的吗?

从输入代码这里我理解它应该看起来像

float * input;
input = new float [];

但我收到错误:"输入"没有命名类型

2 个答案:

答案 0 :(得分:1)

要在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.

答案 1 :(得分:0)

严格地说,你不能分配一个不确定大小的数组&#34;。 在C / C ++中,您只能像以下那样定义指向内存区域的指针(即数组的底层实现):

float* input;

此时,您所拥有的只是指向浮点型数据的指针,指向任何内容, 所以你不能使用&#34;数组,直到您使用new关键字(仅限C ++)实际为其分配内存:

input = new float[1024];

请注意,您必须指定要分配的数组的长度, 所以你不能使用未确定长度的数组。 如果你想使用类似于容器的结构,请考虑 使用std :: list或std :: vector代替。

如果您在编译时知道数组的大小,则可以静态定义数组,而无需动态内存分配:

float input[1024];

这样,数组将在堆栈上,而不是在堆上,并且当变量超出范围时,它将作为常规变量弹出和输出。