c ++如何将2d数组传递给函数以及如何读取它

时间:2018-02-12 12:03:48

标签: c++ function multidimensional-array

我有

char buffer[220][800]={0};

我想将它传递给函数

void myfunction( 2d array, int column, int row);

在myfunction定义中,我希望能够做到

for(c =0 ; c<column ; ++c)
{
     for(r =0 ; r<row ; ++r)
     {
        if(array[c][r] ==0)
        {

           do something
         }
     }

}

2 个答案:

答案 0 :(得分:0)

数组自然衰减指向其第一个元素。但这并不意味着数组数组会衰减为指向指针的指针,而是指向数组的指针。

举个例子

char buffer[220][800];

类型为char[220][800]

当它衰减到指向其第一个元素的指针时,它将与&buffer[0]相同,其类型为char(*)[800]。哪个必须是你的论点的类型:

void myfunction(char (*array)[800], int columns, int rows);

在函数内部,变量array可以像数组一样使用,如array[i][j]中所示。

答案 1 :(得分:0)

你可以这样做:

void myfunction(char [][800], int columns, int rows);

关于数组的遍历,是:需要两个循环。但不要忘记你正在使用字符。我不知道你是否希望将它们与零进行比较。那是空的:

http://en.cppreference.com/w/cpp/language/ascii

顺便说一下,使用矢量你不需要传递剩下的两个参数