指针常量、常量指针、指向常量的指针常量的区别以及数组名的本质

1、指针常量(*const):对应指针变量,即指针本身是常量,指针指向的内容可以被修改。
  • 数据类型 * const 指针变量=变量名(或取地址);
     int* const p;
2、常量指针(const*):常量的指针,即指针指向的内容不能被修改,但指针本身是变量,可以被修改。
  • 数据类型 const * 指针变量=变量名(或取地址);
    int const* p; 
    const int* p;//都可以
3、指向常量的指针常量:即指针本身是常量,指向的内容也是常量,都不能修改。

-const 数据类型 * const 指针变量=变量名(或取地址);

    const int* const p;
4、数组名

指针和数组名在本质上是不同的, 1,指针是地址变量,而数组名是地址常量

  • 数组名本质上是一个地址常量,不是指针,不管是指针常量还是常量指针都不是,之所以在实际编程中,数组名表现出“是”指针的样子,那是因为经过隐式转换形成的,而不是数组名本身具有的
  • 指针与地址的区别:
      1、指针和地址最大的区别就是指针是有类型的,地址是没有类型的。我们当然可以通过绝对地址的方式找到函数和数据,但是地址是没有类型的,不能对地址进行算术操作,在涉及诸如数组等操作时就不能通过地址的自增和自减来访问数组的各个变量。
      2、指针是由地址和类型两部分构成的,指向数据的指针不仅记录该数据的在内存中的存放的地址(即指针的值),还记录该数据的类型(即指针的数据类型),即在内存中占用几个字节(但不同类型的指针大小是相同的通用是4个字节,32位,在64位操作系统下可以是8个字节),这是地址所不具有的。

注:指针就像一个容器,可以存放地址。性质上和变量与数值的关系差不多。指针是变量类型,它的值是地址,它作为变量是可以变化的(指针常量除外)地址是一个数值而已(内存中特定的区域,可以简单想象成门牌号,引用也有此味道,但各有区别,这里只是方便记忆打的比喻)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yhblog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值