2013-10-28 35 views

回答

2

此代碼不會編譯,因爲您正在嘗試製作指針數組。

簡單地說,如果你想使用指針,你可以通過做以下處理字符串:

char *str="HELLO WORLD"; 

如果你想使用字符數組來處理字符串必須刪除地址操作值(*)

那就是:

char text[20]; 

,那麼你可以執行你的函數。

仍有誤差爲範圍的文本是隻在函數內部有效,所以如果你想通過地址和保留價值,使其靜態

static char text[20]; 

return text; 
7

它不編譯,因爲它將字符指針數組視爲單個字符數組。

變量聲明行應該是:

char text[200]; 

用,以修復完成後,它仍然打破的原因,你在可能感興趣的:它返回一個局部變量的地址(text字符數組)作爲函數返回超出範圍,從而使地址無效。有兩種方法:

  1. 最簡單的方法是製作數組static,因爲只要程序運行它就可以運行。
  2. 您也可以使用malloc()切換到動態(堆)內存,但是將所有權轉移給調用者,並且需要調用free(),否則如果調用此函數很多,內存將泄漏。

另外,作爲一個小點,它的名字在一個保留的名字空間中(用戶程序不能定義名字以str開頭的函數)。此外,一個沒有參數的函數應該在C中聲明爲(void),一對空括號確實是而不是的意思是相同的。