當我們運行這段代碼,它工作正常,並打印string constant
在屏幕上:在這種情況下,char []和char *的區別是什麼?
char *someFun(){
char *temp = "string constant";
return temp;
}
int main(){
puts(someFun());
}
但是,當我們運行下面類似的代碼,它不會工作,並在屏幕上打印一些垃圾:
char *someFun1(){
char temp[ ] = "string";
return temp;
}
int main(){
puts(someFun1());
}
背後是什麼原因呢?實質上,這兩個函數都做類似的事情(即返回一個「字符串」),但它們的行爲仍然不同。這是爲什麼?
參數,控制像'放返回地址和幀指針,和本地變量信息()'可以是使用先前使用的局部變量(數組)在'someFun1()的空間'。 –
順帶處理字符串文字時避免出現問題,你應該指針存儲到他們裏面'爲const char *'變量,所以編譯器會阻止你,如果你嘗試修改它們。 –