指针常量:指针所指向的地址里的内容不能被改变。不能被改变是指不能通过这个指针来改变。如:
1
int
*
ptr
=
NULL;
2 int a = 1 ;
3 ptr =& a;
4 * ptr = 2 ;
5 a =2 ;
2 int a = 1 ;
3 ptr =& a;
4 * ptr = 2 ;
5 a =2 ;
这个例子很简单,第4行和第5行的作用是一样的。都是把2写入变量a所在的地址。
1
const
int
*
ptr
=
NULL;
2 int a = 1 ;
3 ptr =& a;
4 * ptr = 2 ;
5 a =2 ;
2 int a = 1 ;
3 ptr =& a;
4 * ptr = 2 ;
5 a =2 ;
6 int b=3;
7 ptr = &b;
在ptr前加const,ptr 被定义为指向int型常量的指针, *ptr 被称为指针常量。
这段代码有两个问题:
第三行,将变量的地址赋给常量的指针,会报warning.
第四行,给*ptr赋指,报错。因为*ptr是指针常量,不能修改。
第五行正确,因为a为变量,可以对其进行赋值。
第七行正确,ptr可以被改变。
常量指针:指针只能赋值一次(定义时除外),不能再修改。如:
1
int
*
const
ptr
=
NULL;
2 int a = 1 ;
3 int b = 3 ;
4 ptr =& a;
5 ptr =& b;
6 * prt = 2 ;
2 int a = 1 ;
3 int b = 3 ;
4 ptr =& a;
5 ptr =& b;
6 * prt = 2 ;
ptr被定义成常量指针,第4行为第一次赋值,正确。第5行则会报错。第6行正确。