在取指针方面,const有略复杂的东西,但是常规的、合理的操作不应该涉及到,因为const int是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改,听起来这像宏,其实这确实就是用来取代宏的:
#define
PI
3.14
const float
Pi
= 3.14;
如果你的代码里用到了100次
PI
(宏),你的代码中会保存100个3.14这个常数,鉴于使用常数进行运算的机器代码很多时候会比使用变量来的长,如果你换用100次Pi(const float),程序编译后的机器码里就不需要出现100次常量3.14,只要在需要的时候引用存有3.14的常量就行了,特别在复杂的运算里,3.14这个常量(其实是无法修改的变量)会被一直装载在寄存器里带来一些性能提升。
清楚了const的用法,const int和int的区别就很简单,int i里的i可以被更改,是真正的变量,const int i的i不可以被更改,是有着变量外衣的常数。
const在
c++
中使用比较广泛,主要起着限定的
作用
,即在程序运行过程中限定的内容不会去改变别的变量或者自身改变,接下来具体介绍const的用法
#1 const在常量的应用
这里主要是
int
const+常量与const
int
+常量可以替换使用
下面在程序中试图修改常量的值
int
main(void)
int
const a[7]; //错误必须赋初值
const
int
m=7;//正确
m=8;//错误表达式必须是可修改的左值
system("pause");
文章目录const关键字总结是什么初始化怎么用核心思想const引用指向const对象的指针&const指针多文件顶层const概念
以const(即单词constant)创建的变量的值不能改变,因为值不能修改,可以理解为常量,但是不存在真正的常量,只是在const的
作用
域中,该变量才不能被修改,超过了这个const的
作用
域,有可能是可以修改。
注意:const仅表示不能改变,不表示具体的变量类型,按照从右向左的方式来理解变量的命名,首先要说明这是一个什么类型的变量,其
1. #define 宏常量 : #define 常量名 常量值(通常定义在文件上方,表示一个常量)
2. cost 修饰的变量 cost 数据类型 常量名=常量值(通常在变量定义之前加关键字cost)
标识符命名规则:
1. 标识符不能是关键字;
2. 标识符只能有字符、数字、下划线组成;
3. 第一个字符必须为字符或下划线;
`const
int
*p` 和 `
int
const *p` 都是指向常量整型的指针,它们的
区别
在于指针本身的常量性质。
`const
int
*p` 的意思是指针 `p` 指向的是一个常量整型变量,也就是说通过 `p` 指针是不能修改所指向的变量的值的,但是指针本身是可以修改的,即可以指向其它的常量整型变量。
而 `
int
const *p` 的意思是指针 `p` 本身是一个指向常量整型变量的指针,也就是说通过 `p` 指针是不能修改所指向的变量的值的,同时指针本身也是不能修改的,即不能指向其它的常量整型变量。
const
int
a = 10;
const
int
b = 20;
const
int
*p1 = &a; // 指针p1指向a常量
p1 = &b; // 正确,p1可以指向其它常量整型变量
int
c = 30;
int
d = 40;
int
const *p2 = &c; // 指针p2指向c常量
p2 = &d; // 正确,p2可以指向其它常量整型变量