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; 

同樣的,也要注意這個變量可存儲的最大空間。
 
轉載自  turkeyzhou
http://blog.csdn.net/turkeyzhou/article/details/6104135


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM