数组指针应用

/*
   用数组指针,多种方式输出a[2]
*/

#include<stdio.h>
#define L(a) sizeof(a)/sizeof(a[0])
typedef int Arr_int[4];
int main()
{
    Arr_int a={1,2,3,4};

    Arr_int *p=&a;//数组指针,*p的数据类型是4个int长
    printf("%d\n",p[0][2]);//先获取到a数组的访问权,在访问a中的相对于首地址偏移量为2的数,即为a[2];
    printf("%d\n",*(p[0]+2));//先获取a的地址,然后在a的首地址+2,表示偏移2个地址到a[2],*()表示输出地址对应的值
    printf("%d\n",(*p)[2]);//先获取a的地址,在利用[]的特性:指针+间接引用,输出a偏移2的地址的数值

    printf("%d\n",p[1][-2]);//p偏移一个数组指针地址,4个int。0 1 2 3 4 5 6 7 8 p指向4的地址,0--3内存的是a数组的各个值,p左移两个int地址指向a[2]
    printf("%d++++\n",*(*p+2));
    printf("%d\n",*(p[1]-2));
    printf("%d\n",p[2][-6]);
    printf("%d\n",p[3][-10]);
    printf("%d\n",*(p[2]-6));

   /* printf("%d....\n",*(p[0]));
    printf("%d-------\n",p[0]);
    printf("%d---\n",(*p));
    printf("%d******\n",&a);*/


    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值