可能重复:
How do I pass a reference to a two-dimensional array to a function?
我有以下二维数组,我试图通过引用函数传递它:
char table_[ROWS][COLUMNS];//ROWS AND COLUMNS are constants
void op_table_(char table_, int ROWS, int COLUMNS)
{
for(int i=0;i<ROWS;i++)
for(int j=0;j<COLUMNS;j++)
table_[i][j]=0;
}
但它不起作用
答案 0 :(得分:3)
以下是一个例子:
#define ROWS 10
#define COLUMNS 10
char table_[ROWS][COLUMNS];//ROWS AND COLUMNS are constants
void op_table_(char table_[ROWS][COLUMNS], int rows, int columns)
{
for(int i=0;i<rows;i++)
for(int j=0;j<columns;j++)
table_[i][j]=0;
}
int main(int argc, char **argv)
{
op_table_(table_, ROWS, COLUMNS);
}
行和列参数显然可以保留,并在函数体中用ROWS和COLUMNS替换。为了使函数更通用,您可以执行以下操作:
void op_table_(void *table_, int rows, int columns)
{
for(int i=0;i<rows;i++)
for(int j=0;j<columns;j++)
*(((char *)table_) + (columns * i) + j) = -1;
}