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

