如何在c中传递二维char数组

时间:2011-12-30 13:17:29

标签: c++ c arrays parameters multidimensional-array

  

可能重复:
  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;
   }

但它不起作用

1 个答案:

答案 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;
}