C語言實現(xiàn)返回字符串函數(shù)的四種方法
前言
C語言返回字符串函數(shù)共有四種方式,分別如下:
- 使用堆空間,返回申請的堆地址,注意釋放
- 函數(shù)參數(shù)傳遞指針,返回該指針
- 返回函數(shù)內(nèi)定義的靜態(tài)變量(共享)
- 返回全局變量
下面來看看詳細的介紹
其實就是要返回一個有效的指針,尾部變量退出后就無效了。
使用分配的內(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; }
這種方式需要注意,不要修改返回的這個字符串,由于是共享地址,對它的修改會反應到每個調(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; }
同樣的,也要注意這個變量可存儲的最大空間。
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學習或者使用C語言能有所幫助,如果有疑問大家可以留言交流。
相關文章
數(shù)據(jù)結構課程設計- 解析最少換車次數(shù)的問題詳解
數(shù)據(jù)結構課程設計- 解析最少換車次數(shù)的問題詳解2013-05-05關于CLion配置visual?studio(msvc)和JOM多核編譯的問題
這篇文章主要介紹了CLion配置visual?studio(msvc)和JOM多核編譯,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07