const 限定符

一条声明语句通用的描述是,由一个基本数据类型(base type)和紧随其后的一个声明符(declartor)列表组成。每个声明符命名了一个变量并指定改变量为与基本数据类型有关的某种类型。例如:

int *p;
基本数据类型是int,声明符列表是*p。这表示p是个指针,指针指向的数据类型是int。

int *&r=p;
基本数据类型是int,声明符列表是*& p。从右往左看,首先&r表示r是对某个东西的引用,*&r表示r是对指针对象的引用,指针指向数据为int。总的来说r 一个对指针p的引用

const 限定符

const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。

const 的引用

把引用绑定到const对象上,称之为对常量的引用(reference const)。简称为 常量引用
常量引用初始化是引用中的特例。正常引用初始化中引用的类型必须与其引用对象的类型一致,而对常量引用允许初始化绑定非常量的对象、字面量,甚至是个一般表达式。
int i = 42;
const int &p1 = i;
const int &p2 = 11;
const int &p3 = p1 * 3;
常量引用可以引用一个非cosnt的对象。例如p1。因为常量引用仅对引用可参与的操作做出限定,对于引用的对象本身是不是一个常量未限定。

指向常量的指针

类似常量引用,指向常量的指针(pointer to const)不能用于改变其所指对象的值,但它可以指向常量或非常量。
int temp1;
int *a=&temp;
const int *p1=a;
要想存放常量对象的地址,只能使用指向常量的指针。
cosnt int b=2; 
const int *p2=&b;
指向常量的指针没有限制指针本身值不能改变,也没有限定指向的对象不能通过其他途径改变。
p=a;
*a=11; //*p也同时改变

const指针

指针也是对象,可以用cosnt修饰,称为指针常量(const pointer)。指针常量必须初始化,而且一旦初始化完成,它的值(也就是存放在指针中的那个地址)就不能在改变。
int a=0;
int *cosnt p=&a;
基本数据类型是int,声明符列表是*cosnt p 从右往左看,首先cosnt  表示p存储的值不能改变,接着*表示p是个指针,指针指向的数据类型是int。总的来说p就是一个指向int类型的常量指针。

顶层cosnt 与底层cosnt

对于指针来说,指针本身是个对象,又可以指向另一个对象。
用名词顶层const(top-level const)表示指针本省是个常量。 (更一般表示任意对象是常量)
用名词底层const(low-level const)表示指针所指的对象是一个常量。(跟一般表示跟指针和引用等复用类型的基本类型部分有关)
int i=0;
int *const p1=&i;
这是顶层const,因为不能改变p1值,它是个常量。
const int a=42;
这是顶层const,因为不能改变a 值,它是个常量。
const int *p2=&a;
这是底层const,因为可以修改p2值。
const int *const p3=p2;
靠右边的是顶层const,靠左边的是底层const。
const int &r=a;
用于声明引用的const 都是底层const。因为常量引用不能改变值。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、5资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值