【发布时间】:2017-08-30 03:23:31
【问题描述】:
在我问这个问题之前,我已经调试了几个小时并阅读了类似的问题帖子,但我仍然无法解决这个问题。我检查了当我定义 void drop(int size, int x_coor, int y_coor, int grid) 这个方法时发生的错误。如何解决这个错误?
这是错误:
main.c:11: error: ',' 预期(得到“10”)
#include <stdio.h>
#include <stdlib.h>
const int max_height = 4;
int height;
#define size 10
int grid[size][size];
void drop(int size, int x_coor, int y_coor, int grid);
int is_stable(int grid[size][size]);
void display(int grid[size][size]);
/*
Function to print out the 23*23 grid with given number of piles
*/
void create_InitialGrid(int total_param, char *piles[])
{
int i, j, k, assigned;
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
for (k = 1; k < total_param; k = k + 3)
{
if ((atoi(piles[k]) == i) && (atoi(piles[k + 1]) == j))
{
height = atoi(piles[k + 2]);
grid[i][j] = height; //store value into 2D array
assigned = 1;
break;
}
else
{
assigned = 0;
}
}
if (assigned != 1)
{
height = 0;
grid[i][j] = height;
}
}
}
}
//Simulate a grain of sand is dropped onto the center pile of the pane
void drop(int size, int x_coor, int y_coor, int grid)
{
.........
}
/*
Display the 2D array
*/
void display(int grid[size][size])
{
int i, j;
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
{
printf("%d", grid[i][j]);
}
printf("\n");
}
}
int main(int argc, char *argv[])
{
create_InitialGrid(argc, argv);
printf("Initial Grid: \n");
display(grid);
printf("////////////////////// \n");
drop();
display(grid);
return 0;
}
【问题讨论】:
-
不要使用宏。
-
@o11c 不幸的是,你在 C 语言中没有太多选择。你不能声明一个常量来声明数组大小
-
@user7027796 这就是为什么在大多数约定中你用大写字母编写常量的原因。如果你写
SIZE,问题就不会出现。无论如何要避免这样的通用词,并使用像GRID_SIZE这样的描述性名称。还有don't useatoi -
@LưuVĩnhPhúc 只有 3 个数字:0、1 和批次。
-
@o11c 我不明白你。试试
const int SIZE = 10; int grid[SIZE][SIZE]
标签: c