【发布时间】:2020-05-14 16:12:31
【问题描述】:
// 将数字转换为数组的函数
int *initialiser(int number)
{
int array[20];
for (int i = 19; i >= 0; i--)
{
array[i] = number % 10;
number /= 10; // number = number/10
}
return array;
}
//我得到这个错误
primaryAddSub.cpp: In function 'int* initialiser(int)':
primaryAddSub.cpp:21:9: warning: address of local variable 'array' returned [-Wreturn-local-addr]
int array[20];
^~~~~
我可以使用 static int array[20];但是每次调用该函数都会返回相同的结果。
【问题讨论】:
-
请改用
std::array或std::vector。 -
谢谢,请问我该如何退货?
-
std::array<int, 20> initialiser(int number) -
或
std::vector<int> initialiser(int number) { std::vector<int> array(20); ... }其余的也可以。只有呼叫站点可能需要一些调整 - 取决于它现在的样子。 -
@user4581301 数组总是通过引用传递 WAT???数组衰减到一个指针,并且该指针按值传递。要通过引用传递数组,您需要明确地这样做,例如
void foo(int (&x)[100]);
标签: c++ arrays function declaration