我有問題,編譯以下行:爲什麼這個簡單的代碼不能編譯?
/*This code compiles with error*/
char HeLev1[6];
HeLev1[]="45.0";
/*but this is OK:*/
char HeLev1[6]="45.0";
我有問題,編譯以下行:爲什麼這個簡單的代碼不能編譯?
/*This code compiles with error*/
char HeLev1[6];
HeLev1[]="45.0";
/*but this is OK:*/
char HeLev1[6]="45.0";
不能賦值的數組。您需要將值分配給數組元素一個接一個(或者,用繩子打交道時,使用strcpy()
)
char HeLev1[6];
strcpy(HeLev1, "45.0");
char HeLev2[6];
HeLev2[0] = '4';
HeLev2[1] = '5';
HeLev2[2] = '.';
HeLev2[3] = '0';
HeLev2[4] = '\0'; /* properly "terminate" the string */
注意,在你的代碼,確定部分,你有一個數組初始化,不分配。
另請注意,在上述兩種情況下,第六個元素(HeLev1[5]
或HeLev2[5]
)具有未定義的值(垃圾)。
你的第一個例子不錯過nul char? OR是隱含的嗎?我不記得 – 2013-04-25 20:39:13
你總是可以使用'memcpy()'數組,不是嗎? – millimoose 2013-04-25 20:40:08
@ 0A0D:nul char是隱含的。你只需要確保數組中有足夠的空間用於所有字符**和** nul字符。 – pmg 2013-04-25 20:40:29
只有初始化時纔可以將整個值賦給數組。像這些是正確的形式,
char HeLev1[6]="45.0";
int array[3]={1,2,3};
char HeLev1[]="45.0";
int array[]={1,2,3};
但是,一旦你跳過這部分。你必須按元素分配元素。像,
char HeLev2[6];
HeLev2[0] = '4';
HeLev2[1] = '5';
HeLev2[2] = '.';
HeLev2[3] = '0';
HeLev2[4] = '\0'; /* properly "terminate" the string */
或者你可以使用memcpy或strcpy。
你的編譯器給出了什麼錯誤信息? – 2013-04-25 20:31:31
數組不可分配。除此之外,'HeLev1 []'不是一個表達式。 – 2013-04-25 20:31:58
賦值語句不能出現在函數體外。 – 2013-04-25 20:32:29