容易出錯的地方在於:指標作為返回值,但是指標指向的記憶體單元在函式返回後,記憶體單元釋放了,這樣就導致了指標成了野指標了!!!
//這樣會報錯,因為str陣列元素為區域性變數,儲存在棧內,函式結束後,內容失效
char* func(char* name)
錯誤分析:
str為位址,返回值為char*,是進行了值傳遞,沒有問題,但是,陣列中的元素為區域性變數,儲存在棧中,函式外無效。
1、解決方法1:將陣列定義為static
char* func(char *name)
2、解決方法2:字串為靜態常量//儲存在常量區
char* func()
3、解決方法3:設定為動態陣列
char* func(char* name)
4、解決方法4:設定為全域性變數
char str[10];
char* func(char* name)
1)呼叫函式時,若直接輸出的話,用乙個字元指標接收即可:char *result = func(); cout 《從從傳出的首位址開始列印字串,直至『\0』。
2)呼叫函式時,若要獲取返回的的字串:
char result[5];
strcpy(result,func());
總結:1)字串的賦值,需要使用strcpy()函式。
2)上述分析,實質為函式返回值為指標的情況,詳細見該文。
C語言函式返回值為指標和函式返回值為void
有時遇到函式返回值為空和函式返回值為指標的情況下,需要在前面定義該函式 函式的返回值為指標也必須在此定義,函式的返回值為void必須在此定義,返回值是整形或者其他基本型別不需要在此定義 函式功能 把格式化的資料寫入某個字串 函式原型 int sprintf char buffer,const cha...
C語言中scanf 函式的返回值
c語言中簡單的輸入scanf函式和輸出printf函式,我們經常使用,也很熟悉,但有時卻還是會在這兩個地方犯錯。scanf 函式 功 能 執行格式化輸入 用 法 int scanf char format argument,scanf 函式是通用終端格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的...
c語言返回值為陣列的問題
借鑑他人,自我學習 1.可以用陣列輸出 返回值為指標形式,傳參為指標。返回乙個位址 例如 char text char tmp return tmp int main printf s text ffffx 輸出的結果為ffffx 但是如果這樣寫 char text char tmp 30 ffff...