c - 初始化矩阵,C 中的预期表达式错误

标签 c arrays initialization

所以我尝试查找一些看起来有用但最终没有用的东西。

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

这里是主要的相关代码

     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_functions.c:14:32: error: expected expression before ‘{’ token *plate[MAX_ROWS][MAX_COLS] = {

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

任何帮助将不胜感激。

最佳答案

使用 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;
}

关于c - 初始化矩阵,C 中的预期表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876854/

相关文章:

c - 为什么 "j= 2 * 3/4 + 2.0/5 + 8/5;"中j的值设置为2而不是3?

Python:区分行向量和列向量

Swift:如何支持 "template method"设计模式(因为 Swift 没有保护)?

c# - Initialize 方法有什么用,我真的需要一个吗?

c - 将文件中的单词读入c中的节点结构

c - 为数组中的行赋值 - C 编程

c - 使用 C 在 Linux COM 上进行 XBee 串行通信

arrays - 在 Postgres 数组中排序有多可靠?

arrays - 读取一个 excel 列并将其唯一值放入一个数组中

c++ - 静态分配对象的值初始化