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

成都創(chuàng)新互聯(lián)公司專注于廣南網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供廣南營(yíng)銷型網(wǎng)站建設(shè),廣南網(wǎng)站制作、廣南網(wǎng)頁(yè)設(shè)計(jì)、廣南網(wǎng)站官網(wǎng)定制、成都小程序開(kāi)發(fā)服務(wù),打造廣南網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供廣南網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
函數(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 類型, 也是 最簡(jiǎn)單 的 辦法, 省心, 安全
在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ò)
要返回字符串 需要返回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ù)字符串。?
}
網(wǎng)站題目:c語(yǔ)言定義函數(shù)返回文字,c語(yǔ)言定義函數(shù)判斷回文數(shù)
鏈接地址:http://chinadenli.net/article6/dsgosig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、手機(jī)網(wǎng)站建設(shè)、、搜索引擎優(yōu)化、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)