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語言中字元陣列的一般形式為 char 陣列名 資料長度 例如 char a 10 a 0 0 a 1 1 a 2 2 a 3 3 ...

C語言字元陣列與字串問題,C語言中將字串賦值給字元陣列的問題

渿河 這是在定義時初始化 如果你的右邊花括號內的字元個數少於 陣列元素個數 那麼其餘的陣列元素將會初始化為0 0 的ascii碼的值就是0 如果你不指定陣列元素個數 編譯器會自動幫你計算出元素個數的 char c 10 這個是已經給定了陣列的大小,達不到陣列大小的長度的話會自動添零的 c語言中將字串...

c語言中測試字串長度的函式,C語言中測試字串長度的函式

你的if中的條件寫的有問題,應改為 if c a c z c a c z 這樣說明只有你輸入的是字母時,a的值才執行 操作。而你的條件c a z a z 後半部分 a z a z 返回值永遠都是真,因為a和a永遠都比z和z小呀。前半部分的c是你輸入的值,如果不是輸入了0對應的ascii碼值48,那也...