c語言里返回字符類型函數(shù) c語言返回字符串的函數(shù)

C語言中函數(shù)如何返回字符串?

別聽 樓上 的 瞎說, 也 別 百度 了, 都是 錯(cuò) 的, 我 告訴 你 正確 答案

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鹿邑免費(fèi)建站歡迎大家使用!

函數(shù) 中 的 字符 串 在 函數(shù) 結(jié)束 的 時(shí)候 會(huì) 自動(dòng) 被 釋放 掉, 所以 即使 返回 char* 指向 的

也 就是 原 函數(shù) 字符串 的 地址, 訪問 的 是 一個(gè) 系統(tǒng) 沒有 分配 給 程序 的 內(nèi)存, 雖然 編譯器 不會(huì) 報(bào)錯(cuò), 但 語法 絕對(duì) 是 錯(cuò)誤 的,而且 你 不一定 能 得到 一個(gè) 正確 的 結(jié)果

三種 解決 方法:

1, struct ret { char a[100]; }; 返回 一個(gè) 結(jié)構(gòu), 結(jié)構(gòu)里面 包含 字符串

2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函數(shù) 里 開 一個(gè) 動(dòng)態(tài) 的 字符串, 這個(gè) 可以 返回, 不過 動(dòng)態(tài) 內(nèi)存 需要 手動(dòng) free 掉

3, 這個(gè) 不是 c語言 了, 調(diào)用 c++ 里面 的 string 類型, 也是 最簡單 的 辦法, 省心, 安全

C 語言帶返回值的函數(shù) 返回值是字符串類型的應(yīng)該怎么定義和調(diào)用呀

給你寫了個(gè)例子,fun函數(shù)用于為字符串開辟空間,然后返回字符串的指針

#include stdio.h

#include stdlib.h

char * fun(int n)

{

return (char *)malloc(n);

}

void main()

{

char *ray;

int i;

ray = fun(5);

for (i = 0; i 4; ++i)

{

ray[i] = 65+i;

}

ray[4] = '\0';

printf("%s", ray);

}

C語言怎么設(shè)定函數(shù)返回值為char*字符串類型?

把函數(shù)的返回值的類型設(shè)置為char類型的指針就可以了。

例如:char* MultMatrix( )

實(shí)例:

#include iostream

using namespace std;

char* MultMatrix( )

{

char*M = new char[4];

M[0]='a';

M[1]='b';

M[1]='c';

M[3]='d';

M[3]='\0';//給字符串寫結(jié)尾

cout M[0] " " M[1] endl;//輸出返回前的數(shù)組

cout M[2] " " M[3] endl;

return M;

}

int main()

{

char *M = MultMatrix();

cout M[0] " " M[1] endl;//輸出返回后數(shù)組

cout M[2] " " M[3] endl;

delete[] M;

return 0;

}

運(yùn)行結(jié)果:

a b

c d

a b

c d

c語言函數(shù)返回字符串

在time1()函數(shù)里,char now[]是個(gè)在函數(shù)里聲明的臨時(shí)變量

函數(shù)返回 char * p之后 ,char now[]的空間就已經(jīng)釋放掉了

如果你想返回時(shí)間字符串

把char now[80]; 改成 char *now =(char *)malloc(sizeof(char)*80);

用malloc函數(shù)申請(qǐng)空間,函數(shù)返回之后空間就不會(huì)被釋放掉了

VC++ 6.0編譯通過

C語言可以返回字符串嗎?可以的話返回值類型是什么呢?能否舉個(gè)例子。謝謝

C語言返回字符串有四種方式:1。使用堆空間,返回申請(qǐng)的堆地址,注意釋放2。函數(shù)參數(shù)傳遞指針,返回該指針3。返回函數(shù)內(nèi)定義的靜態(tài)變量(共享)4。返回全局變量使用分配的內(nèi)存,地址是有效

char *fun()

{

char* s = (char*)calloc(100, sizeof(char*) );

if (s)

strcpy ( s , "abc " );

return s;

}

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

將地址由入?yún)魅?/p>

char* fun(char*s)

{

if (s)

strcpy(s, "abc ");

return s;

}

這種方式調(diào)用都要注意給s分配的大小是足夠。

可以這樣:

char* fun(char*s, int len)

{

if (s)

{

strncpy(s, "abc ", len-1);

s[len-1] = 0;

}

return s;

}

或才使用局部靜態(tài)變量

char* fun()

{

static char s[100];

strcpy(s, "abc ");

return s;

}

這種方式需要注意,不要修改返回的這個(gè)字符串,由于是共享地址,對(duì)它的修改會(huì)反應(yīng)到每個(gè)調(diào)用者的。可以這樣:

const char* fun()

{

static char s[100];

strcpy(s, "abc ");

return s;

}

還有一種是使用全局變量

char g_s[100];

char* fun()

{

strcpy(g_s, "abc ");

return s;

}

同樣的,也要注意這個(gè)變量可存儲(chǔ)的最大空間。

在C語言中,返回一個(gè)字符串的函數(shù)應(yīng)該怎樣定義

要返回字符串 需要返回char*類型

需要注意的是 返回的字符串 不能是該函數(shù)的局部變量,否則會(huì)導(dǎo)致出錯(cuò)

可以是參數(shù)字符串,全局變量,靜態(tài)局部變量,或者動(dòng)態(tài)分配的內(nèi)存

比如

char?*my_str_cpy(char?*d,?char?*s)

{

char?*p=d;

while(*p++=*s++);

return?d;//返回參數(shù)字符串。?

}

分享名稱:c語言里返回字符類型函數(shù) c語言返回字符串的函數(shù)
文章URL:http://muchs.cn/article44/hgsoee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)企業(yè)建站、移動(dòng)網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司