c語言中返回值為char 的情況分析

2021-10-06 04:29:00 字數 874 閱讀 6810

容易出錯的地方在於:指標作為返回值,但是指標指向的記憶體單元在函式返回後,記憶體單元釋放了,這樣就導致了指標成了野指標了!!!

//這樣會報錯,因為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...