zoukankan      html  css  js  c++  java
  • 指针与二维数组间的关系

    1、四种表示a[i][j]的形式是等价的:

    a[i][j]==*(a[i]+j)==*(*(a+i)+j)==(*(a+i))[j]

    2、通过行指针p引用二维数组a的元素a[i][j]的方法可用以下4种等价形式:

    p[i][j]==*(p[i]+j)==*(*(p+i)+j)==(*(p+i))[j]

    3、对指向二维数组的行指针p进行初始化的方法:

    p=a 或p=&a[0]

    4、对指向二维数组的列指针进行初始化的方法(以下三种方法等价):

    p=a[0] 或 p=*a 或 p=&a[0][0]

    5、二维数组元素的输入输出:

    (1)、二维数组作形参:如

    #include<stdio.h>
    #define N 4
    void Inputarray(int p[][N],int m,int n);
    void Outputarray(int p[][N],int m,int n);
    int main()
    {
     int a[3][4];
     printf("Input 3*4 numbers: ");
     Inputarray(a,3,4);
     Outputarray(a,3,4);
     return 0;
    }
    void Inputarray(int p[][N],int m,int n)
    {
     int i,j;
     for(i=0;i<m;i++)
     {
      for(j=0;j<n;j++)
      {
       scanf("%d",&p[i][j]);
      }
     }
    }
    void Outputarray(int p[][N],int m,int n)
    {
     int i,j;
     for(i=0;i<m;i++)
     {
      for(j=0;j<n;j++)
       printf("%4d",p[i][j]);
      printf(" ");
     }
    }

    (2)、二维数组的行指针作形参:如                        (3)、

    #include<stdio.h>                                           //列指针作形参,适应数组列数的变化//
    #define N 4
    void Inputarray(int (*p)[N],int m,int n);     或者// int *p,int m,int n //
    void Outputarray(int (*p)[N],int m,int n);   或者//int *p,int m,int n //
    int main()
    {
     int a[3][4];
     printf("Input 3*4 numbers: ");
     Inputarray(a,3,4);                                         //*a,3,4 //
     Outputarray(a,3,4);                                       // *a,3,4 //
     return 0;
    }
    void Inputarray(int (*p)[N],int m,int n)           //int *p,int m,int n//
    {
     int i,j;
     for(i=0;i<m;i++)
     {
      for(j=0;j<n;j++)
      {
       scanf("%d",  *(p+i)+j);                             //&p[i*n+j]  //
      }
     }
    }
    void Outputarray(int (*p)[N],int m,int n)        //int *p//
    {
     int i,j;
     for(i=0;i<m;i++)
     {
      for(j=0;j<n;j++)
       printf("%4d",*(*(p+i)+j));                     //  p[i*n+j]  //
      printf(" ");
     }
    }

  • 相关阅读:
    构建调试Linux内核网络代码的环境MenuOS系统
    stm32内存管理
    STM32CubeMx——ADC多通道采集
    STM32CubeMx——串口使用DMA收发数据
    STM32CubeMx——串口收发
    stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(二)
    stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(一)
    STM32F103RCT6移植到STM32F103C8T6注意事项
    关于STM32F103系列从大容量向中容量移植的若干问题
    KEIL软件中编译时出现的Error L6200E: symbol multiply defined ...的解决方法
  • 原文地址:https://www.cnblogs.com/hnzsb-vv1130/p/3722020.html
Copyright © 2011-2022 走看看