參考部落格:
char*getstring(void)
void main(void)
void main()
(3)可以定義為靜態型別,static char p="hello world"。用static 宣告乙個指標可以,但也不太好,
因為如果你多次呼叫這個函式返回多個指標,但這幾個指標實際上指向同一塊位址,改變任何乙個的內容將改變所有指標的內容, 這樣也不是很多情況所需要的。
char* getstring(void)
(4)用string型別,用string 實現,是值拷貝!不存在釋放記憶體會影響拷貝的問題。
string getstring(void)
void test4(void)
(5)使用字串常量,因為字串常量儲存再靜態儲存區域,所以一直都存在,p是臨時變數,但過程結束並不會釋放這個字串常量.而p就不一樣了,它是乙個陣列,陣列裡面存放了字串,這個字串沒有放在字串常量儲存再靜態儲存區域,p是臨時變數,跳出函式之後一般保留一步就釋放了,陣列的空間**了,字串沒有了。
constchar *getstring(void)
char *getstring(void)
void getstring(char* p)
void test4(void)
一般在函式中定義乙個物件有兩種方法:
1、在棧上建立區域性變數。注意,在棧上時!棧用於函式是為了返回時找得到呼叫點(在呼叫時壓入棧的)
,那麼,返回時要pop才能得到。函式體中建立的任何東西都消失了(返回值除外),你返回的指標指向的內
容現在不知被用作什麼用途了,如果你還要修改的話,那麼後果不能確定。
2、在堆中分配。返回時不會摧毀,因為堆是全域性存在的。但函式的呼叫者要記得delete回來的指標。
函式返回值為指標型別
char getstring void void main void 在函式getstring 中定義的變數p屬於local 區域性變數 當函式結束時自動消失,所以在返回時,根本就得不到p所指的內容。解決辦法有以下幾種 可能還有很多方法,不過這裡只是最常見的幾中,也是最能體表現程式中記憶體使用的情況...
函式的返回值為指標型別的時候
非常量引用的初始值必須為左值 一。c 例項 b show void test 以c 的某個自定義類為例 當show返回值是自定義型別後,呼叫該函式,會自動呼叫一次拷貝建構函式生成乙個臨時變數,即返回值 是乙個臨時變數二。c例項 typedef struct big thing big thing b...
C語言函式返回值為指標和函式返回值為void
有時遇到函式返回值為空和函式返回值為指標的情況下,需要在前面定義該函式 函式的返回值為指標也必須在此定義,函式的返回值為void必須在此定義,返回值是整形或者其他基本型別不需要在此定義 函式功能 把格式化的資料寫入某個字串 函式原型 int sprintf char buffer,const cha...