C++用const修饰指针共有四种写法(前两种一样):
int a = 100,b = 10; 1 const int *p = &a; 2 int const *p = &a; 3 int *const p = &a; 4 const int *const p = &a;
1、首先说第一种,第一种定义了一个指向常量的指针,当然也可以指向变量,但是指针本身并不是常量,所以可以改变指针的指向,像这样:
p = &b;
*p = b; //错误,因为p是指向const的指针,不能通过它改变所指向对象的值。所谓指向产量的指针,仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能通过其他途径改变。
2、第二种第一的方法和第一种完全一样,所以请忘掉它,只用第一种即可。
3、这种指针被叫做常量指针,这里的const可以看作是用来修饰p的,就是说此处的指针是一个常量指针,一旦被创建,它所指向的地址就不能再改变,所以要在定义的时候初始化。
p = &b;//错误,因为p是静态指针,已经指向了a的地址,不能再改变 &p = b;//正确,p不是指向const对象,而是指向int型的a,a是变量 PS:要想存放常量对象的地址,只能使用指向常量的指针
4、相当于前面的综合,既不能改变指针的指向,也不能通过指针改变它指向对象的内容。
时间: 2024-10-08 06:23:13