C語言基礎系列--返回字符串函數的四種實現方法

有四種方式:
1。使用堆空間,返回申請的堆地址,注意釋放
2。函數參數傳遞指針,返回該指針
3。返回函數內定義的靜態變量(共享)
4。返回全局變量
 
******************以下摘自csdn******************************
 
其實就是要返回一個有效的指針,尾部變量退出後就無效了。

使用分配的內存,地址是有效
char   *fun()
{
        char*   s   =   (char*)calloc(100,   sizeof(char*)   );
        if   (s)
                strcpy   (   s   ,   "abc "   );
        return   s;
}
但這種方式需要注意,必須由使用將將返回的地址free掉

將地址由入參傳入
char*   fun(char*s)
{
        if   (s)
              strcpy(s,   "abc ");
        return   s;
}
這種方式調用都要注意給s分配的大小是足夠。
可以這樣:
char*   fun(char*s,   int   len)
{
        if   (s)
        {
              strncpy(s,   "abc ",   len-1);
              s[len-1]   =   0;
        }
        return   s;
}

或才使用局部靜態變量
char*   fun()
{
        static   char   s[100];
        strcpy(s,   "abc ");
        return   s;
}
這種方式需要注意,不要修改返回的這個字符串,由於是共享地址,對它的修改會反應到每個調用者的。可以這樣:
const   char*   fun()
{
        static   char   s[100];
        strcpy(s,   "abc ");
        return   s;
}

還有一種是使用全局變量
char   g_s[100];
char*   fun()
{
        strcpy(g_s,   "abc ");
        return   s;
}
同樣的,也要注意這個變量可存儲的最大空間。

發佈了33 篇原創文章 · 獲贊 1 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章