zoukankan      html  css  js  c++  java
  • 指针数组和数组指针

    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;
    }
  • 相关阅读:
    Codeforces 376A. Night at the Museum
    Assigning Workstations
    树的直径证明
    Frogger
    Circle
    HDU 1022 Train Problem I
    Argus
    树状数组总结
    C++ 容器(一):顺序容器简介
    C++ 输出缓冲区的管理
  • 原文地址:https://www.cnblogs.com/BeyondAverage0908/p/4551663.html
Copyright © 2011-2022 走看看