關於C 指標作為返回值的問題

2021-07-04 21:19:19 字數 1205 閱讀 5246

在學習刪除字元時,想自己寫個有返回值型別的函式,即呼叫此函式刪除字元,並列把字串的指標返回給主調函式。結果我就寫下了面的**,悲劇也就此開始...

/*

刪除字元

這段是後面注的:函式也可以返回指向外部變數或指向宣告為static的區域性變數的指標。

永遠不要返回指向自動區域性變數的指標:

一旦 delch 返回,變數 des 就不存在了,所以指向變數i的指標將是無效的。

有的編譯器會在這種情況下給出類似"function returns address of local variable"的警告。

如下面的函式。 

*/

#include#include
/*
函式功能:從傳遞的str1字串中查詢str2字元並刪除,最終返回新字串的位址。
引數說明:
str1:查詢字串
str2:要刪除的字元
返回最後終刪除後的字串
*/

char * delch(char *str1,char *str2)

; char *p = str1;

int i = 0;

while(*p != '\0')

p++; }

return des;

}int main()

這段**害的我明晚上半個小時,最終到了休息時間,還沒有搞定。中間自己使用了列印每個字元,發現返回值的位址沒錯但是內容全部清空了....

這時想到了尹老師說的,變數的作用或的問題。才知道問題出在了**。

**修改後如下:

void  delch(char *str1,char *str2)

; char *p = str1;

int i = 0;

while(*p != '\0')

p++;

} printf("刪除後的字元:%s\n",des);

}int main()

如果要使用返回值,則可以使用全域性變數。

指標作為函式返回值

c語言允許函式的返回值是乙個指標 位址 我們將這樣的函式稱為指標函式。下面的例子定義了乙個函式 strlong 用來返回兩個字串中較長的乙個 include include char strlong char str1,char str2 else int main 執行結果 c language ...

用C語言指標作為函式返回值

c語言允許函式的返回值是乙個指標 位址 我們將這樣的函式稱為 指標函式。下面的例子定義了乙個函式 strlong 用來返回兩個字串中較長的乙個 複製 純文字複製 include include char strlong char str1,char str2 else int main includ...

關於c語言中返回值和返回指標的問題。

int testa void char testb void int main 對於返回值的情況 testa與main函式同在棧區,testa結束時c 建立臨時變數,然後將返回值複製給該臨時 變數。printf the value of testa is d n testa 時輸出的是該臨時變數的值...