真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言調(diào)用函數(shù)返回字符串,c語(yǔ)言調(diào)用函數(shù)返回值

c語(yǔ)言函數(shù)如何返回字符串,該函數(shù)又該如何調(diào)用呢

無(wú)法返回字符串,只能返回字符串的首地址。如:char *p = GetString(); 返回的字符串空間必須是開(kāi)辟在堆上的,不能是棧,如果是棧當(dāng)函數(shù)結(jié)束時(shí),數(shù)據(jù)也會(huì)銷(xiāo)毀的;

創(chuàng)新互聯(lián)是一家以網(wǎng)絡(luò)技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護(hù)、成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、網(wǎng)站備案、服務(wù)器租用、域名注冊(cè)、軟件開(kāi)發(fā)、成都小程序開(kāi)發(fā)等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務(wù),是一家有著豐富的互聯(lián)網(wǎng)運(yùn)營(yíng)推廣經(jīng)驗(yàn)的科技公司,有著多年的網(wǎng)站建站經(jīng)驗(yàn),致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開(kāi)一個(gè)面向全國(guó)乃至全球的業(yè)務(wù)窗口:建站歡迎咨詢:028-86922220

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

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

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

也 就是 原 函數(shù) 字符串 的 地址, 訪問(wèn) 的 是 一個(gè) 系統(tǒng) 沒(méi)有 分配 給 程序 的 內(nèi)存, 雖然 編譯器 不會(huì) 報(bào)錯(cuò), 但 語(yǔ)法 絕對(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ù) 里 開(kāi) 一個(gè) 動(dòng)態(tài) 的 字符串, 這個(gè) 可以 返回, 不過(guò) 動(dòng)態(tài) 內(nèi)存 需要 手動(dòng) free 掉

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

c語(yǔ)言函數(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編譯通過(guò)

C語(yǔ)言調(diào)用一個(gè)函數(shù)輸入3個(gè)字符串并返回給數(shù)組

你的

程序

修改如下

#include

"stdio.h"

#define

N

3

#define

M

80

void

_kf(char

b[N][M]);

int

main(void)

{

int

i;

char

a[N][M];

puts("請(qǐng)輸入3個(gè)字符串");

_kf(a);

for(i=0;iN;i++)puts(a[i]);

system("PAUSE");

}

void

_kf(char

b[N][M])

{

int

i;

for(i=0;iN;i++)gets(b[i]);

}

C語(yǔ)言可以返回字符串嗎?

C語(yǔ)言返回字符串有四種方式: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ǔ)的最大空間。


網(wǎng)站欄目:c語(yǔ)言調(diào)用函數(shù)返回字符串,c語(yǔ)言調(diào)用函數(shù)返回值
分享鏈接:http://weahome.cn/article/dsgdpep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部