当我在下面的代码中返回指针float data
时,我遇到了一些问题。
如何在1 4
和CodeA
中打印相同的输出CodeB
。
在CodeA
中,data
已声明为n * n浮点数组。并由一些值分配。
然后打印它们将获得正确的值。
在CodeB
中,arr
是浮点指针。它是函数get2dArrayData
的返回数组。
然后打印它们将得到不正确的值。 (好像溢出?)
CodeA:输出为' 1 4'
float * Application::get2dArrayData(int n) {
float data[n * n];
... // Assign something (data[0] = 1, data[1] = 4, ...) here.
// Print data here.
cout << data[0] << " " << data[1] << endl;
return data;
}
CodeB:输出类似于&#39; 2.8026e-45 6.03325e-34&#39;
void Application::main() {
float * arr = this->get2dArrayData(5);
// Print data here.
// But got error memory address.
cout << arr[0] << " " << arr[1] << endl;
return;
}
我尝试在static
中为data
添加CodeA
。
static float data[n * n];
将显示此错误消息。
error: variable length array declaration cannot have 'static' storage duration
static float data[n * n];
^^^^^