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

創(chuàng)新互聯(lián)公司2013年至今,先為曲江等服務(wù)建站,曲江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為曲江企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
需要注意的是 返回的字符串 不能是該函數(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ù)字符串。?
}
別聽 樓上 的 瞎說, 也 別 百度 了, 都是 錯(cuò) 的, 我 告訴 你 正確 答案
函數(shù) 中 的 字符 串 在 函數(shù) 結(jié)束 的 時(shí)候 會(huì) 自動(dòng) 被 釋放 掉, 所以 即使 返回 char* 指向 的
也 就是 原 函數(shù) 字符串 的 地址, 訪問 的 是 一個(gè) 系統(tǒng) 沒有 分配 給 程序 的 內(nèi)存, 雖然 編譯器 不會(huì) 報(bào)錯(cuò), 但 語法 絕對 是 錯(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í)現(xiàn)返回一個(gè)字符串?dāng)?shù)組,是沒有這種功能的,但是可以用指向數(shù)組的指針來實(shí)現(xiàn):
解釋:
char **p 這個(gè)p就是指向數(shù)組的指針,它指向一個(gè)數(shù)組的起始地址.?
想要引用里面的數(shù)組時(shí),直接使用p[i] 即可。
我們知道C語言里面的各種數(shù)組,本質(zhì)上都是指針,并且函數(shù)其實(shí)也是不能把數(shù)組當(dāng)作參數(shù)的,實(shí)際上都是把數(shù)組的地址傳進(jìn)去了,實(shí)際上就是指向數(shù)組地址的指針。
實(shí)現(xiàn)
這樣返回的P就是指向數(shù)組的指針了,實(shí)際上就是一個(gè)字符串?dāng)?shù)組
函數(shù)解釋:
函數(shù)返回一個(gè)字符串?dāng)?shù)組,實(shí)際上就是指向數(shù)組的指針,傳進(jìn)去的是返回的數(shù)組的大小以及一個(gè)字符串?dāng)?shù)組,用來處理數(shù)據(jù)用。
網(wǎng)站題目:c語言函數(shù)反回字符串 c++反轉(zhuǎn)字符串函數(shù)
URL網(wǎng)址:http://chinadenli.net/article30/hijgpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站策劃、面包屑導(dǎo)航、移動(dòng)網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容