初始化矩阵时,C中应出现表达式错误

初始化矩阵时,C中应出现表达式错误,c,arrays,initialization,C,Arrays,Initialization,所以我试着查找一些似乎有用的东西,但最终没有 我应该在一个单独的函数中将6x8矩阵初始化为2D数组。我有三个文件,一个主函数文件、一个函数文件和一个头文件 下面是来自main的相关代码 int plate[MAX_ROWS][MAX_COLS]; double A = 0, B = 0, T1 =0, T2 = 0, C = 0; printf("\n"); printf("Welcome to the Heat Plate Simulation\n\n"); printf("En

所以我试着查找一些似乎有用的东西,但最终没有

我应该在一个单独的函数中将6x8矩阵初始化为2D数组。我有三个文件,一个主函数文件、一个函数文件和一个头文件

下面是来自main的相关代码

     int plate[MAX_ROWS][MAX_COLS];

double A = 0, B = 0, T1 =0, T2 = 0, C = 0;

printf("\n");
printf("Welcome to the Heat Plate Simulation\n\n");
printf("Enter: Heat-A, Heat-B, Plate-1, Plate-2, Stab-Crit\n\n");
scanf("%lf%lf%lf%lf%lf", &A,&B,&T1,&T2,&C);
然后我试着

    initialize_plate(plate,T1, T2);
去哪

    void initialize_plate(int plate[][MAX_COLS],double T1, double T2)
    {
 plate[MAX_ROWS][MAX_COLS] = {
    { T1, T1, T1, T2, T2, T2},
    { T1, T1, T1, T2, T2, T2},
    { T1, T1, T1, T2, T2, T2},
    { T2, T2, T2, T1, T1, T1},
    { T2, T2, T2, T1, T1, T1},
    { T2, T2, T2, T1, T1, T1} 
    };
return;
    }
我收到的错误是7P_函数。c:14:32:error:在“{”标记之前应该有表达式 *板材[MAX_ROWS][MAX_COLS]={

考虑到我对这个错误的研究,我唯一的猜测是它与已经初始化的数组有关,但我不确定如何纠正这个问题,而如果我在函数中而不是在main中初始化数组,它不只是成为一个局部变量吗


任何帮助都将不胜感激。

这个盘子[MAX_ROWS][MAX_COLS]={…}; 尝试通过初始化在内存中保留一个位置。
无法使用此方法修改数组的值。

使用临时数组中的
memcpy
设置值

void initialize_plate(int plate[][MAX_COLS],double T1, double T2){
    memcpy(plate, (int [][MAX_COLS]){
        { T1, T1, T1, T2, T2, T2},
        { T1, T1, T1, T2, T2, T2},
        { T1, T1, T1, T2, T2, T2},
        { T2, T2, T2, T1, T1, T1},
        { T2, T2, T2, T1, T1, T1},
        { T2, T2, T2, T1, T1, T1} },
        6*sizeof(int [MAX_COLS]));

    return;
}

赋值并不等同于初始化。你必须循环每个索引来赋值。谢谢你的输入
plate
元素的类型是
int
,但是
T1
T2
的类型是
double
。我把它们都改成了double,谢谢你,在尝试解决这个问题时看到了这一点最好至少在此行的输入号码之间留出一个空格:scanf(“%lf%lf%lf%lf%lf%lf”、&a、&B、&T1、&T2、&C);以及调用scanf()返回的值需要进行检查,以确保格式字符串的所有转换都成功。在这种情况下,值应为5谢谢您的输入,结合上面的注释,我认为必须改变代码可能我复制了这个错误,但我得到:错误:ISO C90禁止复合文字[-Wpedantic]memcpy(plate,(int[][MAX_COLS]){@puzzkid您可以这样:
int temp[MAX_ROWS][MAX_COLS]={…};memcpy(plate,temp,sizeof(temp))
或使用option
-std=c99
或其他方法。如果我按照您的方式或我尝试过的其他方式执行,则不确定它是否有效,但无论哪种方式,我都会得到7P_函数的错误。c:18:3:错误:初始值设定项元素在加载时不可计算time@puzzlekid啊,是的。不要用C99编译吗?看这就是我无知的地方,但我知道我们使用PuTTy,我键入gcc来编译我的函数,但具体细节我不知道,也不确定如何找到,但我会研究它