C C 中如何接收return返回來的陣列元素

2021-10-11 02:50:38 字數 1629 閱讀 4192

我們知道return語句作為被呼叫函式的結束,返回給呼叫者函式值。一般來說,是返回乙個函式值,像乙個int, double,char等型別的資料,當然也可以是他們的指標。但是當我們遇到要返回很多數怎麼辦呢?通常想到的是以陣列的形式返回,下面就讓我們來看看:

通常來說有兩種方式:1.通過返回傳入陣列指標的方式;2.以指標變數作為函式引數,來實現陣列的返回。

一、返回傳入陣列指標的方式

首先我們來看看這種方法所涉及的知識:(1)指標函式。c語言中允許乙個函式返回值是乙個指標(位址)基本格式是: 基型別 * 函式名(引數列表)(2)靜態變數與區域性變數。我們知道c語言程式在執行時,作業系統會給其分配記憶體空間。這段空間主要分為四個區域,分別是棧取,堆區,資料區,**區。那麼靜態變數是存放在資料區,作用範圍是全域性的,在記憶體中只儲存乙份。區域性變數通常放在棧中,隨著被呼叫的函式的退出記憶體空間自動釋放。 要接收被調函式返回的指標,那麼可以使用乙個指標變數。關鍵是被調函式用什麼去返回陣列的首位址,正如前面所說,被調函式在執行完之後記憶體空間就被釋放。這裡提供兩種方法解決這一問題:1)通過傳入乙個空的陣列頭位址,返回這個變數

1 //通過返回傳入陣列的指標的方式

2 #include"stdio.h"

3 #include

4 using namespace std;

5 //定義指標函式

6 int *copy(int array, int a, int n);

7 int main();

11 int *p;

12 p = copy(a1, a2, size);

13 cout << p[0] << " " << p[1] << " "《我們知道靜態變數能夠在整函式作用有效那麼,我們可以定義乙個靜態的區域性變數的陣列來達到返回的效果:

1 //使用靜態變數進行返回

2 #include

3 //定義產生陣列的函式

4 int *testfuction();

5 int main()

12 return 0;

13 }

14 int *testfuction();

16 return test;

17 }

從上面**可知test陣列是乙個靜態變數,在被調函式執行完成之後不會被釋放,執行結果如下:

二、以指標變數作為函式引數,實現陣列的返回

指標變數變數需要動態分配記憶體,通常放在堆區中,該區域內通常又程式設計師分配或釋放。將要處理的陣列的首位址以實參的形式傳遞給函式處理,處理完後的指標適合實參的陣列同一塊位址,達到返回陣列的效果。示例**如下:

//使用指標變數作為函式引數,來實現陣列的返回

#include

//定義乙個以指標變數作為形參的函式,n作為迴圈次數

void sumtest(int *p, int n);

using namespace std;

int main2();

sumtest(a, 5);

while(i < 5)

cout << endl;

return 0;

}void sumtest(int *p, int n)

}如**所示,指標變數作為引數傳入函式中,進行資料處理,之後返回的就是處理後的資料。執行結果如下:

以上幾種方法就能夠實現,陣列的返回。

C C 中如何接收return返回來的陣列元素

我們知道return語句作為被呼叫函式的結束,返回給呼叫者函式值。一般來說,是返回乙個函式值,像乙個int,double,char等型別的資料,當然也可以是他們的指標。但是當我們遇到要返回很多數怎麼辦呢?通常想到的是以陣列的形式返回,下面就讓我們來看看 通常來說有兩種方式 1.通過返回傳入陣列指標的...

python 如何return返回多個值

函式的return 語句只能返回乙個值,可以是任何型別。因此,我們可以 返回乙個 tuple型別,來間接達到返回多個值 例 x 除以 y 的餘數與商的函式 def f1 x,y a x y b x a y return a,b 也可以寫作 return a,b c,d f1 9,4 也可以寫作 c ...

T SQL中return 返回語句學習

return命令用於結束當前程式的執行,返回到上乙個呼叫它的程式或其他程式,其語法格式如下 return 整數值或變數 return語句要指定返回值,如果沒有指定返回值,sql server系統會根據程式執行的結果返回乙個內定值,返回值含義如下所示 返回值 含義 0 程式執行成功 1 找不到物件 2...