[英]Cannot modify char array
請考慮以下代碼。
char message[]="foo";
void main(void){
message[] = "bar";
}
為什么MPLAB IDE v8.63中存在語法錯誤? 我只是想改變字符數組的值。
像。這樣的作業
message[] = "bar";
要么
message = "bar";
C.不支持
初始賦值的工作原理是它實際上是數組初始化偽裝成賦值。 編譯器解釋
char message[]="foo";
如
char message[4] = {'f', 'o', 'o', '\0'};
實際上這里沒有涉及字符串文字"foo"
。
但是當你嘗試時
message = "bar";
“bar”被解釋為實際的字符串文字,不僅如此,而且message
不是可修改的左值,即。 你不能分配東西。 如果要修改數組,則必須逐個字符地執行:
message[0] = 'b';
message[1] = 'a';
等,或(更好)使用為你做的庫函數,如strcpy()。
聲明后你不能使用這樣的字符數組。 如果要為字符數組指定新值,可以這樣做: -
strcpy(message, "bar");
只有在聲明char數組時才能在初始化時執行此操作
message[] = "bar";
您無法在代碼中執行此操作
要修改它,可以使用<string.h>
strcpy
strcpy(message, "bar");
你不能像這樣改變字符數組。 如果要更改字符數組的值,則必須通過修改單個字符來更改它,或者可以使用
strcpy(message,"bar");
char message[]="foo";
此語句導致編譯器創建4 char變量的內存空間。此內存集群的起始地址是message
指針值。 message
地址不可更改,您無法更改其指向的地址。 在這種情況下,您唯一的機會是更改message
指向的數據。
char* message="foo"
在這個時候,創建內存來存儲指針的地址,因此message
點在執行期間可以改變的地址。 然后你可以放心地做message="bar"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.