如何通过二维字符数组在C发挥作用 [英] how to pass two dimensional char array to function in c

查看:110
本文介绍了如何通过二维字符数组在C发挥作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:结果
  <一href=\"http://stackoverflow.com/questions/404232/how-do-i-pass-a-reference-to-a-two-dimensional-array-to-a-function\">How做我传递给一个二维数组函数的引用?

我有以下二维数组,我试图通过引用传递到一个函数:

I have the following two dimensional array and I was trying to pass it by reference 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;
   }

,但它不工作

推荐答案

下面是一个例子:

#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);
}

行和列参数可以明显地离开,并与在函数体中的行和列取代。为了使功能更普遍的你code做这样的事情:

The rows and columns parameters can obviously be left off and substituted with ROWS and COLUMNS in the function body. To make the function more general you code do something like:

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

这篇关于如何通过二维字符数组在C发挥作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆