指针数组和数组指针

1.利用指针数组求二维数组元素的和

 1 //len1二维数组的行数
 2 
 3 //len2二维数组的列数
 4 
 5 int getSum(int *a[],int len1,int len2)
 6 
 7 {
 8 
 9     int sum = 0;
10 
11     for(int i=0;i<len1;i++)
12 
13     {
14 
15         for(int j=0;j<len2;j++)
16 
17         {
18 
19 //            sum  += a[i][j];
20 
21 //            sum += (*(a+i))[j];
22 
23             sum += *((*(a+i))+j);
24 
25         }
26 
27     }
28 
29     return sum;
30 
31 }
32 
33 int main()
34 
35 {
36 
37     int a[3][2] = {1,2,4,5,6,6};
38 
39     int *p[3] = {NULL};
40 
41     for(int i=0;i<3;i++)
42 
43     {
44 
45         p[i] = a[i];
46 
47     }
48 
49     printf("sum = %d",getSum(p, 3, 2));
50 
51     return 0;
52 
53 }

2.利用数组指针来求二维数组的和

int sum1(int (*p)[2],int len)
{
    //传递一维数组的指针
    int sum = 0;
    for(int i=0;i<len;i++)
    {
        for(int j=0;j<2;j++)
        {
            sum += *(*(p+i)+j);
        }
    }
    return sum;
}
int sum2(int (*p)[3][2])
{
    //传递二维数组的指针
    int sum = 0;
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<2;j++)
        {
            //sum += (*p)[i][j];
            sum += *(*(*p+i)+j);
        }
    }
    return sum;
}
int main()
{
//    printf("size = %ld
",sizeof(int [4]));
    int a[3][2] = {1,2,4,5,6,7};
    printf("sum1 = %d
",sum1(a, 3));
    
    printf("sum2 = %d
",sum2(&a));
    return 0;
}
原文地址:https://www.cnblogs.com/BeyondAverage0908/p/4551663.html