2.1 二级指针作输入之数组基础


数组类型

//我声明了一个数组类型
 typedef int (Myarr5)[5];
 //用数据类型定义一个变量
 Myarr5 arr5;//相当于 int arr5【5】

数组指针

1.     //我声明了一个数组类型
       typedef int(Myarr5)[5];
      //定义一个指向数组类型的指针变量
      //Myarr5 *pArray;
      for (i = 0; i < 5; i++)
       {
            //a[i] = (*pArray)[i]
            printf("%d\n", (*pArray)[i]);
        }

2.//直接定义一个数组指针类型 用这个类型定义指针变量
        typedef int(*pMyarr5)[5];    

        pMyarr5 myP = NULL;
        int b[5] = { 1, 3, 2, 55, 6 };

        myP = &b;
        for (i = 0; i < 5; i++)
        {
            //a[i] = (*pArray)[i]
            printf("%d\n", (*myP)[i]);
        }

3.      int c[5] = { 1, 3, 2, 55, 6 };
        //直接定义一个指向数组的指针变量
        int(*mypArray)[5] = &c;

        for (i = 0; i < 5; i++)
        {
            //a[i] = (*pArray)[i]
            printf("%d\n", (*mypArray)[i]);
        }


注意
a代表数组数组元素的首地址,不是整个数组的地址
&a是整个数组的地址 &a和a的数据类型不一样
//&a代表数组类型
//a代表数组首元素的类型
int a[10] = { 1, 2 };

a代表数组首元素的地址(不是整个数组的地址),请问a, 指针变量
1变量–》2指针变量–》3常量指针变量(常量指针,不能更改)
结论:不能被随便的更改指针变量的值(不能随便的改变指针的指向)

为什么它是一个const???
在定义a【5】的时候,编译器分配内存,为了能够顺利地回收内存,为了有机会让编译器拿到原始内存的首*地址,编译器就把a做成了const量,
int a[5] = { 1, 3, 2, 55, 6 };
//所以a = 0x11 是错误的,不能更改a的指向

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值