指针常量与常量指针的理解与记忆,不用死记硬背

在正文之前先讲一下指针既然存的是一个地址,为什么指针还需要数据类型来修饰呢

指针的数据类型的意义

之前所见的整型变量等常规变量中,数据类型是为了方便分配合适的内存空间,但是不同数据类型的指针在内存中的占用空间大小通常是相同的,在32位系统中,通常指针大小为4字节;在64位系统中,指针大小为8字节

可以看到不同数据类型的指针在内存中的占用空间大小相同,那么指针的数据类型意义是什么?

指针的实质是一个内存地址,从这个角度可以认为指针没有类型,但这个地址指向的内存是可以存放任意类型数据的,如int* 可以存放int类型的数据,char*可以存放char类型的数据,从这个角度可以认为它是有类型的。

数据类型最主要的作用是当使用指针进行解引用操作(通过指针访问它指向的内存中的值),编译器需要知道如何正确地解释那一块内存。比如当对指针进行算术运算时,编译器需要知道指针所指向的数据类型的大小,以正确计算偏移量

指针常量

指针常量可以理解为一个常量,前面的指针两个字理解为修饰,比如漂亮妹妹,妹妹是主体,漂亮是修饰词。

现在来看指针常量的特点:指针的指向(也就是另一个内存的地址)不可以更改,指针指向的值(另一个内存的存储的内容)可以改。

遵循指针的定义技巧“从指针标识符开始,由里到外地读,const修饰最靠近它的那个”。

“int* const p = &a;”中指针标识符是*,从里到外(向两边延展)看到const修饰变量p,那么此时p相当于常量,不能改变了,最前面的int代表该指针指向的内容是int型。

注意:在定义指针常量和常量指针时,必须为其赋予一个合法的初始值。如果没有初始化,指针所指向的内存单元是未知的,可能会导致程序出错或崩溃。

常量指针

常量指针本质是指针,这个指针是一个指向常量的指针,指针的指向可以修改,但指针指向的值不可以修改

“const int* p = &a;”中的指针标识符是*,从里到外(向两边延展)看到const修饰的是int,表示所指向的内容是常量,即该指针所指向的内容不能被修改。

小白学习过程中的个人理解记录,不足之处还请大佬指正!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值