【笔记】C++.04092020 常量和指针

const关键字

用来定义常量constant

常量是不能被赋值的,即不能充当左值。

命名常量/符号常量Named Constant

等号右边的部分也是常量叫做字面常量Literal Constant

常量在声明的同时就要赋值,之后都不可修改,即常量不可变。

指针

指针是一个地址

下面是一个 常量指针常量 / 常指针常量 的例子:

const x = 5;

const int* const p = &x;

表示p只能指向x的地址,x的值只能是5.

不能通过解引用改变x的值,也不能让p指向其他地址。


 

const int x = 1, x2 = 2, * p1;
p1 = &x;
p1 = &x2;

p1是常量指针,可以重复赋值,但不能通过解引用修改指向的量的值,即 “ *p1 = 2; ” 是错误的。

指向常量值的是一个指针变量,称为常量指针/常指针。

指针所指向的内容不能通过指针的解引用(*p)修改。

指向变量的指针则称为变量指针。

常量指针所指向的数据内容不可变。

列子:

//常量指针/常指针
const int x = 1;
const int* p1;
p1 = &x;
p1 = nullptr;
//*p1 = 10;是错误的
const char* str1 = "hello";

其中 *p1是常量,*str1是常量,p1是变量,str1是变量。

字符串"hello"是一个字面常量,作右值时相当于把一个地址赋给str1,所以适用于对const限制的指针赋初值。

指向变量的一个不可变的指针,称为指针常量。

指针本身的内容是个常量,本身不可以改变,所指内容可以改变,即可以通过解引用改变所指内容的值。

数组名就是一个指针常量。

例子:

//指针常量
int x = 1;
int* const p2 = &x;
*p2 = 0;

其中 p2是常量,*p2是变量,可以通过*p2给x重新赋值。

应用auto类型:

const int x = 1;
auto p1 = &x; //const int *p1
auto p2 = "1234ohmygod??"; //const char *p2 
auto const p3 = "ohmygod!!"; //const char *const p3
发布了18 篇原创文章 · 获赞 0 · 访问量 348

猜你喜欢

转载自blog.csdn.net/qq_43750882/article/details/105407348