Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么这个简单的代码不能编译?_C - Fatal编程技术网

C 为什么这个简单的代码不能编译?

C 为什么这个简单的代码不能编译?,c,C,我无法编译以下行: /*This code compiles with error*/ char HeLev1[6]; HeLev1[]="45.0"; /*but this is OK:*/ char HeLev1[6]="45.0"; 不能为数组赋值。您需要逐个为数组元素赋值(或者在处理字符串时,使用strcpy()) 请注意,在代码的OK部分中,您有一个数组初始化,而不是赋值 还要注意,在上述两种情况下,第6个元素(HeLev1[5]或HeLev2[5])有一个未定义的值(垃圾)。您只能

我无法编译以下行:

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

不能为数组赋值。您需要逐个为数组元素赋值(或者在处理字符串时,使用
strcpy()

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


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

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

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。

编译器会给出什么错误消息?数组是不可分配的。除此之外,
HeLev1[]
不是一个表达式。赋值语句不能出现在函数体之外。要复制字符串,您应该使用
strcpy()
,不能使用赋值。您的第一个示例是否也缺少nul字符?还是含蓄?我记不起你总是可以
memcpy()
array,不?@0A0D:num字符是隐式的。你只需要确保数组中有足够的空间容纳所有字符和nul字符。@millimoose:是的,但不要这样做:@millimoose:当然,但我怎么知道?我们在这里讨论的是字符数组:)
    char HeLev2[6];
    HeLev2[0] = '4';
    HeLev2[1] = '5';
    HeLev2[2] = '.';
    HeLev2[3] = '0';
    HeLev2[4] = '\0'; /* properly "terminate" the string */