本文是根据崔毅东,杨谈老师c++程序设计(面向对象进阶)课程3.05记录的读书笔记
指针两个属性
指针本身具有两个属性,即指针变量本身和指针变量所指向数据。
指针和被指数据都可以有变量或者常量两种状态
指针常量 常量指针 常指针常量的定义
指针常量必须初始化,它所指向的对象是一定的。
常指针常量即为常量指针常量,顾名思义具有常量指针和指针常量二者的特性
示例:
上左:普通指针
上右:常量指针
下左:指针常量
下右:常指针常量
#include<iostream>
using std::cout;
using std::endl;
int main()
{
//常量在声明时就必须做初始化
const int x=33;
//const int x1; 因为x1未初始化会报错
//常量不可变
//常量指针所指数据不可变
const int* p=&x;
//x=22; error X为静态 不可改变
//(*p)=22;error X为静态 不可通过*p间接改变
int y=3;
const int* q=&y;
y=2;//correct
//(*q)=4;error 虽然y是变量,但是const 关键字限制了q的访问属性
//指针常量的指向不可变
int z=3;
int* const r=&z;
//r=&y;error r不能再指向除了z以外
//常指针常量的指向和所指向数据均不可变
const int* const s=&y;
//字符串属于常量区
//char* s="hello";warning
const char* s1 ="hello";//correct
//*s1='p';error 常量不可改变
}