C/C++指针与const的自我理解

一: 指针是一个类型: 指针类型 ; 指针并不是变量。
提要:
(1)


int a = 10;
const int*aPtr = &a;
首先,定义了指针类型的变量; 其次,int* aPtr;

指针类型的变量,其实是定义了两个变量。一个是指针类型的变量a, 一个是普通变量 *a

【注】那这么做的意义是什么呢?
答: 你可以使用这个变量,但你不能修改-----这就是const 和 指针 组合的意义。

(2)把 ‘*’ 读成 pointer to.
(3)把const和向后紧贴着的一个类型一起读
(4)const char 和 char const 没有区别(在定义变量时)

首先明确普通的数据类型:

int a = 10; 他代表了什么?
分配了一个内存,这个内存有个地址,(你如果想取这个地址可以用&),但是现在这个声明没有地址的事:

简而言之:
在这里插入图片描述
下面来看一下指针类型:
指针类型的变量,其值为:另一个变量的地址;
例如:
int *a;

在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201122162644504.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p1bmlvckNoZXN0bnV0,size_16,color_FFFFFF,t_70#pic_center在我看来,定义指针就是定义一个地址;定义一个普通变量是定义一个内容。如果一个数据想要存在于内存之中,你还想完全控制这个数据:
(1)这个数据在哪里?地址(序号A)
(2)这个数据多大,占用多少字节?类型(序号B)
(3)这个数据的内容?10,用(序号C)

int* a; 可以读为:a 是一个指针类型的变量,a的值指向的是一个int型的变量。

二、 接下来说const:
const : constant : 不变的;等价于ReadOnly
作用:
1:保护你的设计
2:便于编译器优化你的代码

首先:cpnst 修饰变量:
const 可以修饰普通类型的变量;也可以修饰指针类型的变量。再次强调,指针是一种类型,不是变量。

例如:

普通类型
const int A = 10;  意思是:a 是一个常数了,对应C语言中的常数定义,#define A 10
int b = A ; 允许;
A = 1; 不允许

const int* a; 意思是:'a' is a pointer to const int
			  翻译给来就是: a 是一个指针,指向不可以修改的整型变量(或者指向只读的整型)
上面说了,定义指针类型时,其实同时定义了两个变量。
a: 指针类型的变量
*a: int 类型的。 ----- 不可以修改的整型变量:*a = 10 会出错。*a 只能作为右值。

			 

如下图: 当const 与 指针 混合使用的时候, ‘*’ 读成 pointer to.
在这里插入图片描述
根据上图:

char * const cp;  const cp is a point to char
分析: 两个变量,哪一个不变?? 一个cp, 一个*cp;
				  不变的指针变量 指向一个char 类型的变量。
				  you can get it,maybe.

再举个例子:
const char* const cp;char const * const cp; 是一样的效果
首先,两个变量; 其次,没其次了,两个const,肯定都不能变。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值