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

來源:互聯網
上載者:User
有四種方式: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;
}
同樣的,也要注意這個變數可儲存的最大空間。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.