c語言里返回字符類型函數 c語言返回字符串的函數

C語言中函數如何返回字符串?

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

網站建設哪家好,找創新互聯公司!專注于網頁設計、網站建設、微信開發、微信小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了鹿邑免費建站歡迎大家使用!

函數 中 的 字符 串 在 函數 結束 的 時候 會 自動 被 釋放 掉, 所以 即使 返回 char* 指向 的

也 就是 原 函數 字符串 的 地址, 訪問 的 是 一個 系統 沒有 分配 給 程序 的 內存, 雖然 編譯器 不會 報錯, 但 語法 絕對 是 錯誤 的,而且 你 不一定 能 得到 一個 正確 的 結果

三種 解決 方法:

1, struct ret { char a[100]; }; 返回 一個 結構, 結構里面 包含 字符串

2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函數 里 開 一個 動態 的 字符串, 這個 可以 返回, 不過 動態 內存 需要 手動 free 掉

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

C 語言帶返回值的函數 返回值是字符串類型的應該怎么定義和調用呀

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

#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語言怎么設定函數返回值為char*字符串類型?

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

例如:char* MultMatrix( )

實例:

#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';//給字符串寫結尾

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

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

return M;

}

int main()

{

char *M = MultMatrix();

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

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

delete[] M;

return 0;

}

運行結果:

a b

c d

a b

c d

c語言函數返回字符串

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

函數返回 char * p之后 ,char now[]的空間就已經釋放掉了

如果你想返回時間字符串

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

用malloc函數申請空間,函數返回之后空間就不會被釋放掉了

VC++ 6.0編譯通過

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

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

char *fun()

{

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

if (s)

strcpy ( s , "abc " );

return s;

}

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

將地址由入參傳入

char* fun(char*s)

{

if (s)

strcpy(s, "abc ");

return s;

}

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

可以這樣:

char* fun(char*s, int len)

{

if (s)

{

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

s[len-1] = 0;

}

return s;

}

或才使用局部靜態變量

char* fun()

{

static char s[100];

strcpy(s, "abc ");

return s;

}

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

const char* fun()

{

static char s[100];

strcpy(s, "abc ");

return s;

}

還有一種是使用全局變量

char g_s[100];

char* fun()

{

strcpy(g_s, "abc ");

return s;

}

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

在C語言中,返回一個字符串的函數應該怎樣定義

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

需要注意的是 返回的字符串 不能是該函數的局部變量,否則會導致出錯

可以是參數字符串,全局變量,靜態局部變量,或者動態分配的內存

比如

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

{

char?*p=d;

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

return?d;//返回參數字符串。?

}

分享名稱:c語言里返回字符類型函數 c語言返回字符串的函數
文章URL:http://m.kartarina.com/article44/hgsoee.html

成都網站建設公司_創新互聯,為您提供外貿網站建設企業建站移動網站建設面包屑導航網站內鏈

廣告

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

成都app開發公司
主站蜘蛛池模板: 国产色无码专区在线观看| 无码国产精品一区二区免费I6| 无码日韩人妻av一区免费| 九九久久精品无码专区| 蜜桃无码AV一区二区| 日产无码1区2区在线观看 | 免费一区二区无码视频在线播放| 无码日韩精品一区二区人妻| 国产成人精品无码一区二区| 亚洲成A人片在线观看无码3D| 精品人妻无码区在线视频| mm1313亚洲精品无码又大又粗| 亚洲av成人无码久久精品| 亚洲精品无码午夜福利中文字幕| 亚洲AV无码乱码在线观看牲色| 日韩亚洲AV无码一区二区不卡| 亚洲AV成人无码久久精品老人 | 国产精品亚洲一区二区无码| 无码人妻精品中文字幕免费东京热 | 亚洲日韩AV无码一区二区三区人| 亚洲大尺度无码无码专区| 亚洲av成本人无码网站| 久久亚洲AV无码精品色午夜麻豆| 亚洲人成无码www久久久| 亚洲GV天堂GV无码男同| 无码人妻丰满熟妇区免费| 国内精品人妻无码久久久影院导航| 蜜臀AV无码精品人妻色欲| 久久无码AV一区二区三区| 无码欧精品亚洲日韩一区| 日韩人妻无码一区二区三区久久99| 国产精品午夜无码av体验区| 无码永久免费AV网站| 精品久久久无码人妻中文字幕| 无码人妻精品中文字幕免费| 中文字幕日韩精品无码内射| 亚洲AV无码专区日韩| 下载天堂国产AV成人无码精品网站 | 熟妇人妻中文av无码| 无码专区一va亚洲v专区在线| 免费无码黄十八禁网站在线观看|