C語言實(shí)現(xiàn)返回字符串函數(shù)的四種方法
前言
C語言返回字符串函數(shù)共有四種方式,分別如下:
- 使用堆空間,返回申請(qǐng)的堆地址,注意釋放
- 函數(shù)參數(shù)傳遞指針,返回該指針
- 返回函數(shù)內(nèi)定義的靜態(tài)變量(共享)
- 返回全局變量
下面來看看詳細(xì)的介紹
其實(shí)就是要返回一個(gè)有效的指針,尾部變量退出后就無效了。
使用分配的內(nèi)存,地址是有效
char *fun() { char* s = (char*)calloc(100, sizeof(char*) ); if (s) strcpy ( s , "abc " ); return s; }
但這種方式需要注意,必須由使用將將返回的地址free掉
將地址由入?yún)魅?
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ǔ)的最大空間。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用C語言能有所幫助,如果有疑問大家可以留言交流。
相關(guān)文章
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)- 解析最少換車次數(shù)的問題詳解
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)- 解析最少換車次數(shù)的問題詳解2013-05-05Clion(CMake工具)中引入第三方庫的詳細(xì)方法
這篇文章主要介紹了Clion(CMake工具)中引入第三方庫的詳細(xì)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02C語言課程設(shè)計(jì)之抽獎(jiǎng)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言課程設(shè)計(jì)之抽獎(jiǎng)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12關(guān)于CLion配置visual?studio(msvc)和JOM多核編譯的問題
這篇文章主要介紹了CLion配置visual?studio(msvc)和JOM多核編譯,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07