为什么这个简单的代码没有编译?

时间:2013-04-25 20:30:25

标签: c

编译以下行时遇到问题:

/*This code compiles with error*/
char HeLev1[6];
HeLev1[]="45.0";
/*but this is OK:*/
char HeLev1[6]="45.0";

2 个答案:

答案 0 :(得分:5)

您无法为数组指定值。您需要逐个为数组元素赋值(或者,在处理字符串时,使用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 */

请注意,在您的代码中,OK部分,您有一个数组初始化,而不是赋值。

另请注意,在上述两种情况下,第6个元素(HeLev1[5]HeLev2[5])都有一个未定义的值(垃圾)。

答案 1 :(得分:-1)

只能在初始化时将整个值分配给数组。像这些是正确的形式,

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。

相关问题