指针数组,数组指针,常量指针,指针常量

以前对指针数组和数组指针的概念,很模糊,今天看到了一篇觉得讲的很好,所以就写下来和大家分享

数组指针:

 int(*p)[5]:  p是数组指针,表示定义了一个指向多维数组的指针,即p指向的是一个数组,这个数组有5个元素。 对指针p 的赋值必须是4个int元素的数组地址,即只要包含4个元素的地址的都可以赋值给p,不管这个   数组有多少行,但列数必须是4,例如:int a[4], int b[5][4]都可以赋值给p,赋值方式为:p = &a,p=b;


指针数组:

int  *p[5]:   定义了一个指针数组,表示每个数组元素都是一个指针元素,例如:p[1] = &i; p[1]指向一个int元素的地址,  *p[1]则表示所指向元素的值。


常量指针:

是指--指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过 指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量。

      例如:int a=45;
            const int *p=&a; //或者 int const  *p=&a;
            *p=50;//是错误的,因为是指向常量的指针。
            int b=5;
            p=&b;//这是正确的,因为指针本身保存的地址是可以被改变的


指针常量:

是指--指针本身是常量。它指向的地址是不可改变的,但地址里的内容可以通过指针改变。它指向的地址将伴其一生,直到生命周期结束。有一点需要注意的是,指针常量在定义时必须同时赋初值

   例如 int a=20;

                int * const p=&a;   注意:指针常量在定义时必须同时赋初值。
               *p=25;正确的,可以
               int b=25;
               p=&b;这样是错误的,因为是指针常量,所以不允许改变指针的值
辨别常量指针和指针常量:就看const是在*号前面还是后面,如果是前面则是 常量指针;如果在后面则是 指针常量
例如:const int * p 和 int const * p 都是常量指针;
            int * const p 是指针常量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值