编译错误:variable-sized object may not be initialized

原因,定义数组的时候使用变量来定义数组长度。

如下代码:

int a = 10;

char b[a];                    //编译不报错

//char b[a] = "jfkd";    //报错,使用变量定义长度时,不可在定义时同时进行初始化赋值,需要在之后进行赋值

printf("b = %s, len = %d:%d ", b, strlen(b), sizeof(b));

如下代码则无问题:

int a = 10;

char b[a];                    //编译不报错

strcpy(b, "jfdljf");

printf("b = %s, len = %d:%d ", b, strlen(b), sizeof(b));

原因:在C中,使用变量来定义数组长度是,这个数组可以定义,却不能同时进行初始化赋值,需要在之后赋值。













种一棵树最好的时间是十年前,其次是现在。
原文地址:https://www.cnblogs.com/islch/p/12569317.html