[英]How do you declare a pointer to a function that returns a pointer to an array of int values in C / C++?
[英]How can an declare an array in a function that returns an array in c++
// 將數字轉換為數組的函數
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]; 但 function 每次調用時都會返回相同的結果。
正如評論所說,更喜歡使用std::vector
而不是int*
。 這是如何工作的一個例子:
std::vector<int> initialiser(int number)
{
std::vector<int> array;
// ... fill up array
return array;
}
如果您絕對想返回一個int*
,那么正如錯誤所說,您將返回一個指向局部變量的指針。 您需要分配 memory 代替:
int *initialiser(int number)
{
int *array = new int[20];
// ... fill up array
return array;
}
完成后不要忘記delete
此 memory。 此外,調用者確實無法知道數組中有多少元素,因此它們可能會越界讀/寫。
一般來說,這是容易出錯的,所以更喜歡第一個版本,這樣你就不必擔心刪除任何東西,也不太可能犯越界錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.