稍微有些程式設計經驗的朋友都會知道乙個函式是無法返回乙個區域性陣列的,至於原因,我想從兩個方面進行說明,雖然並不是這兩個方面都對其有影響,但我認為在這個問題上我們都該了解的東西:
① 函式的返回型別不能為乙個陣列型別。
這個就是說,作為函式返回型別的不能為乙個陣列,我們要想返回一系列的值,只能用乙個指標來代替了,返回指向這一系列值的第乙個元素的指標。
② 區域性陣列,具有區域性作用域,當函式呼叫結束之後,陣列也就被作業系統銷毀了,即**了他的記憶體空間,它裡面的東西隨時都有可能被覆蓋。雖然此時我們獲得了指向這一塊記憶體的指標,但此刻裡面的東西很大可能都不是我們想要的了。
我們又該怎麼解決這個問題呢?
1: 返回乙個靜態的陣列
即我們在定義陣列的時候吧陣列定義成為靜態的。
如:char *fun()
static char a = "hello,world";
return a;
2: 動態分配記憶體
如:char *fun()
char *a = (char*)malloc(sizeof(char)*100);
a = "hello,world";
return a;
3: 使用全域性陣列
全域性陣列具有全域性的作用域。
C 返回區域性物件
引用 看做乙個靜態的指標 const 指標 引用是c 中的概念,引用既不是變數的拷貝,也不是指向變數的指標 相對於指標 引用被建立同時必須被初始化 不能有null引用,必須與合法儲存單元關聯 引用被初始化,引用關係就不能改變 我的理解是引用是編譯器產生的變數表中變數的乙個名字,類似於表中這個變數的索...
函式返回區域性變數
一般的來說,函式是可以返回區域性變數的。區域性變數的作用域只在函式內部,在函式返回後,區域性變數的記憶體已經釋放了。因此,如果函式返回的是區域性變數的值,不涉及位址,程式不會出錯。但是如果返回的是區域性變數的位址 指標 的話,程式執行後會出錯。因為函式只是把指標複製後返回了,但是指標指向的內容已經被...
函式返回區域性變數
函式返回區域性變數 一般的來說,函式是可以返回區域性變數的。區域性變數的作用域 只在函式內部,在函式返回後,區域性變數的記憶體已經釋放了。因此,如果函式返回的是區域性變數的值,不涉及位址,程式不會出錯。但是如果返回的是區域性變數的位址 指標 的話,程式執行後會出錯。因為 函式只是把指標複製後返回了,...