指针常量与常量指针
指针常量:const修饰指针本身
常量指针(只读类型的指针):const修饰指针指向的类型
判断:const在*前还是后,前:常量指针;后:指针常量
指针常量:
- 必须初始化;
- 可以通过指针修改指向变量的值.
- 不可以改变指针的指向
常量指针
只读类型的指针
- 可以不初始化
- 不可以通过指针修改指向变量的值
- 可以改变指针的指向
- 可以指向非const修饰的变量。
练习代码
//const修饰的变量必须初始化
const int n = 10;
//n = 200;//编译错误,n是只读类型的变量,不能赋值
int const m = 100;
int x = 100;
//常量指针
const int *p=nullptr;
int const *p1;
p = &m;
//*p = 100;错误.常量指针不能通过指针修改指向变量的值。
//m = 200;//m是只读类型的变量,不能赋值
p = &x;//可以改变指针的指向
//*p = 200;//编译错误
x = 200;
//指针常量:
int * const p2=&x;
*p2 = 200;//正确
//p2 = &x;//错误,不能改变指针的指向
//只读类型的指针常量:既不可以改变指向,也不可以通过指针修改指向变量的值
const int * const p3 = &m;
char *pchar = "abcd";
//pchar[0] = 'a';//编译不报错,运行可以导致程序崩溃