数组指针的用法

int (*p)[4]; //数组指针

数组指针就相当于一次声明了一个指针。只不过这个指针指向很特别,是一个数组。

[]优先级大于*,故数组指针声明时要加()。


数组指针自增(*p++)时,指针指向移动sizeof(类型)。

 

其实上句在其他类型指针也适用。

如int *p;

 //指针指向了int,就是整型指针,整型指针有啥特点?就是能保存整形变量的地址。有啥用途?就是p++的时候能指向下一个int型数。所以了,经常用指针指向一个数组。因为他们都是int型的,所以推导出步长,整型指针的步长为sizeof(int),即4字节    

//同理可以得出什么float型指针,char型指针什么的。。。    

同理就得出了数组指针,特点 :保存数组首地址。用途:p++的时候能指向下一个数组。所以,要用它来指向一个二维数组。因为二维数组里的每一个元素都是相同类型的(都是一个int型数组),所以推导出步长了 sizeof(int[4]),即16

/说白了就一指针,指向了数组类型

如:

int b[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。
    //int *p2=b;
    p=b;
    int i=0;
    while(i<16)
    {
          printf("%d\t",(*p)[i]);
          //printf("%d\t",*p2++);
          i++;
    }
 

数组指针下标自增与本身自增的区别

int a[3][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24}};
    int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。
    p=a;
    int i=0;
    while(i<3)
    {
        //printf("%d\t",(*p)[i]);
        //数组指针,指向的是一个数组整体,相当于指针也带了下标,当执行i++操作时,下标+1,得到该数组的下一个元素,
        //在该例中,指针没有位移,所以依次输出为1 2 3

        printf("%d\t",(*p++)[0]);
        //整型数组类型的指针,指向的是一个数组整体,当执行*p++操作时,指针位移该数组长度的位数
        //在该例中,即指针位移4个int的长度,所以输出是1 11 21
        i++;
    }



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值