- 相關(guān)推薦
C語言中返回字符串函數(shù)的實(shí)現(xiàn)方法
有四種方式:
1。使用堆空間,返回申請(qǐng)的堆地址,注意釋放
2。函數(shù)參數(shù)傳遞指針,返回該指針
3。返回函數(shù)內(nèi)定義的靜態(tài)變量(共享)
4。返回全局變量
其實(shí)就是要返回一個(gè)有效的指針,尾部變量退出后就無效了。
使用分配的內(nèi)存,地址是有效
char *fun()
{
char* s = (char*)calloc(100, sizeof(char*) );
if (s)
strcpy ( s , "abc " );
return s;
}
但這種方式需要注意,必須由使用將將返回的地址free掉
將地址由入?yún)魅?/strong>
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ǔ)的最大空間。
【C語言中返回字符串函數(shù)的實(shí)現(xiàn)方法】相關(guān)文章:
c語言中time函數(shù)的用法03-20
C語言之字符串處理函數(shù)04-01
C語言中isalnum()函數(shù)和isalpha()函數(shù)的對(duì)比04-01
C語言函數(shù)返回值解析11-24
C語言返回多個(gè)值的方法12-02