c語言返回值為數組的問題


借鑒他人,自我學習

1.可以用數組輸出

返回值為指針形式,傳參為指針。返回一個地址

例如:

char *text(char *tmp)

{

    return tmp;

}

int main()

{

  printf("%s",text("ffffx"));

}

輸出的結果為ffffx

 

但是如果這樣寫

char *text()

{

   char tmp[30] = "ffffx";

   return tmp;

}

int main()

{

printf("%S",text());

}

這樣語法雖然沒有問題但是輸出結果沒有意義;因為tmp[30]是局部變量返回時雖然首地址沒有變,但是里面的值已經無意義。

tmp*定義的是一個全局變量。

char *text()

{

   char *tmp = "ffffx";

   return tmp;

}

int main()

{

printf("%S",text());

}

如果這樣的話就可以了因為字符串代表的十一個全局變量被存儲在一個地址中,而且地址被返回了,之后就算tmp被銷毀了,結果還是正確的。


免責聲明!

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



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