如何從 C++ 函式中返回區域性陣列?
區域性陣列不能直接從 C++ 函式中返回,因為它可能在函式呼叫之後就已不存在於記憶體中了。解決這個問題的方法是在函式中使用靜態陣列。由於靜態陣列的生存週期是整個程式,因此可以輕鬆地從 C++ 函式中返回,而不會出現上述問題。
一個展示此方法的程式如下。
示例
#include <iostream>
using namespace std;
int *retArray() {
static int arr[10];
for(int i = 0; i<10; i++) {
arr[i] = i+1;
}
return arr;
}
int main() {
int *ptr = retArray();
cout <<"The array elements are: ";
for(int i = 0; i<10; i++) {
cout<< ptr[i] <<" ";
}
return 0;
}輸出
以上程式的輸出如下。
The array elements are: 1 2 3 4 5 6 7 8 9 10
現在讓我們來理解一下以上的程式。
在 retArray() 函式中,定義了一個靜態陣列 arr。然後,使用一個 for 迴圈對這個陣列進行初始化。最後,返回陣列 arr。展示這一過程的程式碼片段如下。
int *retArray() {
static int arr[10];
for(int i = 0; i<10; i++) {
arr[i] = i+1;
}
return arr;
}在 main() 函式中,呼叫函式 retArray(),並且指標 ptr 指向陣列 arr 的開頭。使用 for 迴圈顯示陣列元素。展示這一過程的程式碼片段如下。
int main() {
int *ptr = retArray();
cout <<"The array elements are: ";
for(int i = 0; i<10; i++) {
cout<< ptr[i] <<" ";
}
return 0;
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP