我正在尝试为浮点数定义一个未知大小的数组但是不了解malloc()函数的工作原理,有人能告诉我它应该是什么样子以及它是如何工作的吗?
从输入代码这里我理解它应该看起来像
float * input;
input = new float [];
但我收到错误:"输入"没有命名类型
答案 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];
这样,数组将在堆栈上,而不是在堆上,并且当变量超出范围时,它将作为常规变量弹出和输出。