所以我尝试了一些似乎有用的东西,但最终却没有。
我应该在单独的函数中将6x8矩阵初始化为2D数组。我有三个文件,一个主函数文件,一个函数文件和一个头文件。
以下是主要
的相关代码 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:错误:'{'标记之前的预期表达式 * plate [MAX_ROWS] [MAX_COLS] = {
鉴于我对此错误进行了研究,我唯一的猜测是它与已经初始化的数组有关,但我不知道如何纠正这个问题而如果我在函数内初始化数组而不是主要不是它只是一个局部变量吗?
非常感谢任何帮助。
答案 0 :(得分:1)
使用临时数组中的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;
}
答案 1 :(得分:0)
此牌照[MAX_ROWS] [MAX_COLS] = {...}; 尝试通过初始化在内存中保留一个位置。 你不能使用这种方法来修改数组的值。