在time1()函數(shù)里,char now[]是個在函數(shù)里聲明的臨時變量
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出景泰免費做網(wǎng)站回饋大家。
函數(shù)返回 char * p之后 ,char now[]的空間就已經(jīng)釋放掉了
如果你想返回時間字符串
把char now[80]; 改成 char *now =(char *)malloc(sizeof(char)*80);
用malloc函數(shù)申請空間,函數(shù)返回之后空間就不會被釋放掉了
VC++ 6.0編譯通過
要返回字符串 需要返回char*類型
需要注意的是 返回的字符串 不能是該函數(shù)的局部變量,否則會導(dǎo)致出錯
可以是參數(shù)字符串,全局變量,靜態(tài)局部變量,或者動態(tài)分配的內(nèi)存
比如
char?*my_str_cpy(char?*d,?char?*s)
{
char?*p=d;
while(*p++=*s++);
return?d;//返回參數(shù)字符串。?
}
別聽 樓上 的 瞎說, 也 別 百度 了, 都是 錯 的, 我 告訴 你 正確 答案
函數(shù) 中 的 字符 串 在 函數(shù) 結(jié)束 的 時候 會 自動 被 釋放 掉, 所以 即使 返回 char* 指向 的
也 就是 原 函數(shù) 字符串 的 地址, 訪問 的 是 一個 系統(tǒng) 沒有 分配 給 程序 的 內(nèi)存, 雖然 編譯器 不會 報錯, 但 語法 絕對 是 錯誤 的,而且 你 不一定 能 得到 一個 正確 的 結(jié)果
三種 解決 方法:
1, struct ret { char a[100]; }; 返回 一個 結(jié)構(gòu), 結(jié)構(gòu)里面 包含 字符串
2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函數(shù) 里 開 一個 動態(tài) 的 字符串, 這個 可以 返回, 不過 動態(tài) 內(nèi)存 需要 手動 free 掉
3, 這個 不是 c語言 了, 調(diào)用 c++ 里面 的 string 類型, 也是 最簡單 的 辦法, 省心, 安全