c語言返回值為陣列的問題

2022-05-31 23:48:16 字數 591 閱讀 2878

借鑑他人,自我學習

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被銷毀了,結果還是正確的。

C語言函式返回值為指標和函式返回值為void

有時遇到函式返回值為空和函式返回值為指標的情況下,需要在前面定義該函式 函式的返回值為指標也必須在此定義,函式的返回值為void必須在此定義,返回值是整形或者其他基本型別不需要在此定義 函式功能 把格式化的資料寫入某個字串 函式原型 int sprintf char buffer,const cha...

c 賦值(賦值為函式返回值)語句的返回值問題

不知道為什麼,之前一直腦子裡有乙個誤解,賦值語句的返回值應該是1 成功賦值 或0 賦值失敗 今天其實在學linux的時候突然揣摩了一下 才發現這個問題 if dir opendir home ljz desktop null opendir返回空說明目錄開啟失敗 這句 裡面 null的判斷在 dir...

c 返回值為引用

與返回原值的區別 return的位址和返回值的位址是同乙個,也就是佔據著同一塊記憶體,因此要求此時return的東西必須是乙個實體 有儲存位址 不能是乙個作用域僅在函式中的區域性變數 例如 int fun a fun 就會報錯。因為a找不到它應該存在的位址在 int fun int c a fun ...