简析指针2.0

指针数组,即指针所组成的数组,其本质也是指针。数组和指针由于其本质上都是地址,所以在输入时,不用加&,但是在输出时,需要加*。

  1 #include<stdio.h>
  2 int main()
  3 {
  4     int a[3][4];
  5     int *p[3];                           //占24个字节
  6     int i,j;
  7     for(i=0;i<3;i++)
  8     *(p+i)=*(a+i);                       //可写为p[i]=a[i]。
  9 
 10         for(i=0;i<3;i++)
 11            for(j=0;j<4;j++)
 12               scanf("%d",p[i]+j);      //可写为*(p+i)+j
 13 
 14 
 15         for(i=0;i<3;i++)
 16         { for(j=0;j<4;j++)
 17              printf("%d\t",*(p[i]+j));  //可写为*(*(p+i)+j))
 18           putchar('\n');}
 19 }

在讲数组指针之前,首先要明白,多维数组的数组名,代表的是第一个数组的地址,而不是首元素的地址,更不能代表整个数组的地址。

  1 #include<stdio.h>
  2 int main()
  3 {
  4   int a[3][4];
  5   int (*pa)[4];
  6   int i;
  7   for(pa=a;pa<a+3;pa++)      //a代表首个一维数组的地址,a+3代表第三个,不能写pa<3,pa是地址,怎么小于一个数?
  8   {
  9     for(i=0;i<4;i++)
 10      {
 11        scanf("%d",*pa+i);    //&a[i][j]相当于*(a+i)+j,a+i相当于pa
 12      }
 13    }
 14 
 15    for(pa=a;pa<a+3;pa++)
 16    {
 17     for(i=0;i<4;i++)
 18      {
 19        printf("%d\t",*(*pa+i));     //二维数组是*(*(a+i)+j),这里的a+i就相当于pa
 20       }
 21      printf("\n");
 22 }
 23 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值