C語言如何返回字串,C語言中函式如何返回字串?

時間 2021-09-03 07:07:18

1樓:匿名使用者

1、c語言中,字串不是一種基本型別,其本質是字元陣列,因此直接返回字串是不行的。因為c語言不允許例如 char[10] fun(){}這樣的函式定義方式。但是可以返回字元指標。

返回一個動態分配的記憶體地址。

2、例如:

char * c;

char * getinput(int length)//length 為要輸入字串的最大長度

c = getinput( 100);

//當不再使用時需要呼叫

free(c);//釋放記憶體

2樓:天上的一條龍

new 的作用是申請記憶體,函式結束後這段記憶體不會被釋放掉。而如果不用new,在函式結束後記憶體就會被釋放掉,即使有首地址,記憶體被釋放掉了,還是無法訪問。

3樓:匿名使用者

返回了棧記憶體,函式中分配的棧記憶體在函式執行結束後,就釋放了。所以就會訪問出錯。

4樓:

使用new時,str在堆內分配,在沒有呼叫delete前,都會被保留下來,所以輸入資料被儲存下來。

如果使用

char* fanhui()

由於astr在棧內分配,當fanhui函式返回後,棧空間被銷燬,發回的astr是無效的。

5樓:80星00星

返回一個指向該字串的指標,

(要注意保護這個指標指向的字串的空間。

(要注意說明該指標的所有權。

6樓:匿名使用者

new出來的是在堆中,沒有用new是在棧中,離開了 fanhui()就釋放了

7樓:俎靜皖

new 是動態分配(在堆上分配),你向系統要了 50 b 的記憶體,如char* str=new char[50]; // 50 * 1b

堆上分配就是這情況,你不釋放(delete一下),它就認為你在用著;不會再給別人用

如果給你的你不用了,或是你把它給忘記了,那就算是記憶體洩露了、當然,你程式退出的時候,系統會替你**、不過這樣的習慣不好,你想,如果你寫了死迴圈(作業系統、伺服器程式等)、那裡面不斷滴在記憶體洩露,你就危險了、後來發現,不知不覺,記憶體怎麼就不夠用了,明明自己用的不多啊、、

修改一下:

char* fanhui()

而char* fanhui()

c語言中函式如何返回字串?

8樓:匿名使用者

char now[80];

char *p=null;

p=now;

printf("%s",p);

return p;

這些操作都是子函式中的資料(變數),在子函式結束後,p,now都會被釋放,你的輸出都是不準確的!

c語言可以返回字串嗎?可以的話返回值型別是什麼呢?能否舉個例子。謝謝

9樓:劉劉

c語言返回字串有四種方式:1。使用堆空間,返回申請的堆地址,注意釋放2。

函式引數傳遞指標,返回該指標3。返回函式內定義的靜態變數(共享)4。返回全域性變數使用分配的記憶體,地址是有效

char *fun()

但這種方式需要注意,必須由使用將將返回的地址free掉將地址由入參傳入

char* fun(char*s)

這種方式呼叫都要注意給s分配的大小是足夠。

可以這樣:

char* fun(char*s, int len)return s;

} 或才使用區域性靜態變數

char* fun()

這種方式需要注意,不要修改返回的這個字串,由於是共享地址,對它的修改會反應到每個呼叫者的。可以這樣:

const char* fun()

還有一種是使用全域性變數

char g_s[100];

char* fun()

同樣的,也要注意這個變數可儲存的最大空間。

10樓:匿名使用者

可以的。。用char *做為返回型別。。。其實也就是char型陣列。。。

如:char * printhello()

11樓:風灬清灬雲淡

可以的,函式型別定為char *,返回型別是char陣列的陣列名,也就是首地址

c語言可以返回字串嗎?

12樓:劉劉

c語言返回字串有四種方式:1。使用堆空間,返回申請的堆地址,注意釋放2。

函式引數傳遞指標,返回該指標3。返回函式內定義的靜態變數(共享)4。返回全域性變數使用分配的記憶體,地址是有效

char *fun()

但這種方式需要注意,必須由使用將將返回的地址free掉將地址由入參傳入

char* fun(char*s)

這種方式呼叫都要注意給s分配的大小是足夠。

可以這樣:

char* fun(char*s, int len)return s;

} 或才使用區域性靜態變數

char* fun()

這種方式需要注意,不要修改返回的這個字串,由於是共享地址,對它的修改會反應到每個呼叫者的。可以這樣:

const char* fun()

還有一種是使用全域性變數

char g_s[100];

char* fun()

同樣的,也要注意這個變數可儲存的最大空間。

c語言怎麼設定函式返回值為char*字串型別?

13樓:匿名使用者

把函式的返回值的型別設定為char型別的指標就可以了。

例如:char* multmatrix( )例項:#include

using namespace std;

char* multmatrix( )

int main()

執行結果:

a bc da bc d

14樓:悶聲發大才

老大,你**寫得有問題,首先你先確定是字串指標,而不是指標陣列char *p[127];

char *str[127];

這兩行都有問內題

char* getstring(char *str)int main()

15樓:匿名使用者

char *x[127];

修改為 char x[127];

char *p[127];

char *str[127];

修改為char p[127];

char str[127];

c語言怎麼返回字串陣列,C語言中怎麼查詢字串陣列中的某個字元?

風若遠去何人留 c語言返回值不支援返回陣列,不過可以通過返回指標型別,用以替代陣列。在c語言中,陣列大多數時候是可以用指標替代的。不過需要注意的是,不能夠返回在函式內部定義的區域性變數陣列,因為一旦函式退出,區域性變數就會被釋放,導致陣列指標無效。可以返回以下幾種 1 全域性變數,或者全域性變數空間...

c語言中字串連線怎麼解決,C語言中字串連線怎麼解決??

大野瘦子 include char a 10 123 char b 10 abc char c 20 strcpy c,a 把串a複製到有足夠空間的c中strcat c,b 把b連線到c的串尾需要注意的事項 c的長度一定要能夠容納要轉換的數字的長度,比如下面的例子,c的長度至少為8 1234567 ...

c語言刪除字串中指定字元,C語言刪除字串中指定字元

加百列 一 問題描述 從鍵盤輸入一個字串給str和一個字元給c,刪除str中的所有字元c並輸出刪除後的字串str。1 輸入 第一行是一個字串 第二行是一個字元。2 輸出 刪除指定字元後的字串。二 設計思路 1 同插入問題,定義兩個字元陣列a,b。以及標誌刪除位置的int型pos。2 用gets函式輸...