C C 函式返回陣列的方法

2021-10-04 01:50:24 字數 837 閱讀 2938

c/c++中想要乙個函式返回陣列,此類問題,應用場景往往為了解決函式間相互通訊,比如某個函式內處理的完的結果資料需要交接給另乙個函式的情況,方法大概有三種:(例如在函式func中對a陣列進行賦值,之後可以再對該陣列進行其他操作)

1.利用全域性變數直接對資料進行操作。

int a[2]

;void

func

(void

)int

main()

這類方法打破了函式間的通訊及封裝的思想,所以不推薦使用。

2.通過堆區動態開闢記憶體解決。

int

*func

(void

)int

main()

這種方法是錯誤的,我們知道c/c++中函式的區域性變數,在函式退出就自動刪除了,所以函式不能返回函式內區域性變數的位址,這與變數的生命週期有關,所以我們可以動態用malloc函式開闢記憶體,在用free釋放。

int

*func

(void

)int

main()

由於動態開闢內存在堆區,手動開闢,手動釋放,這樣就可以完全規避變數生命週期的問題。

3.由呼叫方傳入陣列指標

void

func

(int

*a)int

main()

雖然沒有在函式中返回陣列,但也可以解決陣列通訊問題,主要思路就是呼叫方中定義陣列,然後將位址傳入。

加油~~~

C C 函式返回陣列指標

因為陣列不能被拷貝,所以函式不能返回陣列.不過,函式可以返回陣列的指標或引用.宣告乙個返回陣列指標的函式 type function parameter list dimension int func int i 10 使用尾置返回型別 trailing return type 後面為函式的返回型別...

函式返回陣列的方法

include using namespace std float multmatrix float a 4 float b 4 int main float b 4 float m multmatrix a,b cout m 0 m 1 endl cout m 2 m 3 endl return ...

函式返回陣列

函式是不能返回陣列的,因此很直接的就想到的是返回指標,指標的宣告位置也要注意,防止在子函式中記憶體釋放掉了,因此用new進行動態分配記憶體,最後注意記憶體的釋放 陣列的釋放與動態分配的變數的釋放方式還有所不同 錯誤的 如下 include using namespace std float mult...