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函式輸...