C 即使对变量使用常量,也可能无法初始化变量大小的对象
我使用常量分配变量,但数组显示错误“变量大小的对象可能未初始化”C 即使对变量使用常量,也可能无法初始化变量大小的对象,c,C,我使用常量分配变量,但数组显示错误“变量大小的对象可能未初始化” #包括 int main() { 城市常数=10; const int week=2; int arr[城市][周]={34,34,64,23,65,22,65,77,42,74,22,88,46,34,77,53,63457234723}; 对于(int i=0;i您有几个问题 您在主题中发布了它,就是您不能对数组长度使用const int,然后对其进行初始化,因为它将成为一个可变大小的对象,并且您不能用常量对其进行初始化。您可
#包括
int main()
{
城市常数=10;
const int week=2;
int arr[城市][周]={34,34,64,23,65,22,65,77,42,74,22,88,46,34,77,53,63457234723};
对于(int i=0;i您有几个问题
您在主题中发布了它,就是您不能对数组长度使用const int,然后对其进行初始化,因为它将成为一个可变大小的对象,并且您不能用常量对其进行初始化。您可以使用#ifdef定义城市/周,这样就不会发生
您使用了比较(=)而不是赋值(=)
更改:
int arr[city][week]=={34,34,64,23,65,22,65,77,42,74,22,88,46,34,77,53,63,457,234,723};
致:
您需要更改printf并可能添加换行符:
printf(“%d\n”,arr[i][j])
因此,总结一下:
#include <stdio.h>
#define city 10
#define week 2
int main()
{
int arr[city][week]={34,34,64,23,65,22,65,77,42,74,22,88,46,34,77,53,63,457,234,723};
for(int i=0;i<city;i++)
{
for(int j=0;j<week;j++)
{
printf("%d\n", arr[i][j]);
}
}
}
#包括
#定义城市10
#定义第2周
int main()
{
int arr[城市][周]={34,34,64,23,65,22,65,77,42,74,22,88,46,34,77,53,63457234723};
对于(int i=0;i=
比较,=
赋值
您甚至可以打印相同的输出
我还希望使用{a,b},{c,d}…
您正在为数组维度使用const
限定变量,而不是“整型常量表达式”。对于c,这意味着您的数组是一种可变修改类型,c不允许使用初始值设定项
正如其他人已经告诉您的那样,如果允许初始化,语法必须是=
,而不是=
,不完全是重复,但您应该阅读,我假设在您的真实代码中,您没有=
,而是=
,因为否则错误消息没有多大意义。错误消息指示原始源代码中不存在=
,因为该消息是尝试使用=
初始化可变长度数组的结果。如果此时代码中存在=
,则消息会有所不同。因此我们知道问题中的=
是在准备问题时输入的错误因此,应该通过编辑问题或向OP发出请求,而不是发布答案来修复此问题。换句话说,此答案不会回答所询问的真实问题。错误消息表示原始源代码中不存在=
,因为该消息是尝试初始化的结果,即h=
,一个可变长度数组。如果当时代码中有一个=
,则消息会有所不同。因此我们知道问题中的=
是在准备问题时输入的错误,因此应该通过编辑问题或向OP发出请求来修复,而不是发布答案。换句话说s、 这个答案并没有回答被问到的真正问题。@EricPostChil你是对的,我的答案解决了发布的代码,但它没有“解决”发布的代码也是,因为它留下了一个可变长度数组的初始化,违反了C 2018 6.7.9 3中的约束。感谢您澄清这一点,更改了我的答案。很抱歉==操作数是我打算使用的输入错误=
int arr[city][week]={34,34,64,23,65,22,65,77,42,74,22,88,46,34,77,53,63,457,234,723};
#include <stdio.h>
#define city 10
#define week 2
int main()
{
int arr[city][week]={34,34,64,23,65,22,65,77,42,74,22,88,46,34,77,53,63,457,234,723};
for(int i=0;i<city;i++)
{
for(int j=0;j<week;j++)
{
printf("%d\n", arr[i][j]);
}
}
}