哪些錯誤使用本C代碼行哪些錯誤使用本C代碼行
char *string()
{
char *text[20];
strcpy(text,"Hello world");
return text;
}
我是在三分球差,我在以前的一些紙看到了這一點。 無法解決。
哪些錯誤使用本C代碼行哪些錯誤使用本C代碼行
char *string()
{
char *text[20];
strcpy(text,"Hello world");
return text;
}
我是在三分球差,我在以前的一些紙看到了這一點。 無法解決。
此代碼不會編譯,因爲您正在嘗試製作指針數組。
簡單地說,如果你想使用指針,你可以通過做以下處理字符串:
char *str="HELLO WORLD";
如果你想使用字符數組來處理字符串必須刪除地址操作值(*)。
那就是:
char text[20];
,那麼你可以執行你的函數。
仍有誤差爲範圍的文本是隻在函數內部有效,所以如果你想通過地址和保留價值,使其靜態
static char text[20];
return text;
它不編譯,因爲它將字符指針數組視爲單個字符數組。
變量聲明行應該是:
char text[200];
用,以修復完成後,它仍然打破的原因,你在可能感興趣的:它返回一個局部變量的地址(text
字符數組)作爲函數返回超出範圍,從而使地址無效。有兩種方法:
static
,因爲只要程序運行它就可以運行。malloc()
切換到動態(堆)內存,但是將所有權轉移給調用者,並且需要調用free()
,否則如果調用此函數很多,內存將泄漏。另外,作爲一個小點,它的名字在一個保留的名字空間中(用戶程序不能定義名字以str
開頭的函數)。此外,一個沒有參數的函數應該在C中聲明爲(void)
,一對空括號確實是而不是的意思是相同的。