Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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_Arrays - Fatal编程技术网

C数组错误:可变大小的对象可能未初始化

C数组错误:可变大小的对象可能未初始化,c,arrays,C,Arrays,它返回两次错误:可变大小的对象可能未初始化。 如何解决这个问题?如果这些数组是在局部范围内声明的,并且MAX\u NR\u DIGITS不是编译时整数常量,C将尝试创建可变长度数组(VLA)。这是一个数组,其大小在运行时确定 避免这种情况的最简单方法是,如果这是无意的,则确保MAX\u NR\u DIGITS是编译时常量,例如#define MAX\u NR\u DIGITS 10 当数组是VLA时,代码不起作用的原因是初始值设定项列表仅在编译时使用。因此,C语言要求VLA不能初始化 对于VLA

它返回两次错误:可变大小的对象可能未初始化。
如何解决这个问题?

如果这些数组是在局部范围内声明的,并且
MAX\u NR\u DIGITS
不是编译时整数常量,C将尝试创建可变长度数组(VLA)。这是一个数组,其大小在运行时确定

避免这种情况的最简单方法是,如果这是无意的,则确保
MAX\u NR\u DIGITS
是编译时常量,例如
#define MAX\u NR\u DIGITS 10

当数组是VLA时,代码不起作用的原因是初始值设定项列表仅在编译时使用。因此,C语言要求VLA不能初始化

对于VLA,您可以通过在运行时为数组指定一个值来轻松解决此问题:

char a[MAX_NR_DIGITS] = {5, 2, 1, 3, 5, 0, 7, 3, 4, 4};
int sizeA = 10;
char n[MAX_NR_DIGITS] = {5, 2, 6};
int sizeN = 3;

什么是最大位数?你从哪里得到错误?你能试着给我们看看吗?并在构建时包含完整且未编辑的错误输出?您使用什么开发环境?我猜
MAX\u NR\u DIGITS
不是一个常数。这只是一个猜测,因为你没有告诉我们什么是
MAX\u NR\u DIGITS
,显然它不是一个整数常量,否则OP不会得到那个错误。MAX\u NR\u DIGITS是10^8。我必须计算^n,结果最多可以有10^8位数字。所以MAX_NR_数字是常数int。
memcpy(n,  &(char[3]){5, 2, 6},  3);