【C++】函数如何传递二维数组?二维数组是怎么通过指针进行传递?

举例子:

int data[3][4] ={ {1,2,3,4} , {5,6,7,8} , {9,10,11,12} };

int total = sum(data,3);

请自己先尝试写出sum函数的原型

思考过后,请继续看下面详细分析:

data 是一个数组名,该数组有3个元素,第一个元素本身又是一个数组,有4个int 值组成。

因此,data的类型是指向4个int组成的数组的指针:

int sum( int (*ar2)[4],  int size );//  注意,(*ar2)括号不能省略,省略后变成了一个指向4个int组成数组的指针了

                                                 // 实际应该是一个由4个指向int 的指针组成的数组

为了可读性,还可以写成 : int sum( int ar2[][4] , int size );

sum函数只能处理由4列组成的数组,传递的第二个参数是行数

int a[100][4];

int b[35][4];

。。。

int total1 = sum(a,100);

int total2 = sum(b,35);

int total3 =sum(a+10,20); 

那么sum的原型是什么?

int sum (int ar2[][4], int size)
{
    int total = 0;
    for (int r = 0; r < size; r++)
        for( int c = 0; c<4 ; c++ )
            total += ar2[r][c];
    return 0; 
}

ar2[r] 是由4个int组成的数组的名称 

 有人疑问,假如使用(*ar2)[4]传递,那怎么表示?

ar2[r][c] == *( *(ar2 + r )  + c );

       

猜你喜欢

转载自blog.csdn.net/qq_15698613/article/details/85258099