const修饰指针变量

2021-01-16  本文已影响0人  NullUser

const修饰指针有两种情况,

情况一:是const修饰后无法改变指针所指向地址的内容,但指针可以指向其它地址,即指针自身可以被改变。
int a = 1;
int b = 2;
const int *pa = &a;
*pa = 3;  //报错
pa = &b;

指针pa指向了变量a的地址,指针自身的值此时等于a的地址,此时的const写法,const int pa = &a;表示pa指向的a的地址所存放的值无法修改,所以*pa=3;在试图通过pa修改a的值时,会报错,而pa=&b改变的是指针pa的值,所以不会报错。

情况二:另一种是无法修改指针所指向地址,即指针自身不能被改变,但可以修改所指向地址的内容。
int a = 1;
int b = 2;
int * const pa = &a;
*pa = 3;
pa = &b; //报错

指针pa指向了变量a的地址,指针自身的值此时等于a的地址,此时的const写法,int * const pa = &a;const修饰指针自身,pa自身的值无法修改,所以**pa=3;在试图通过pa修改a的值时,不会报错,而pa=&b改变的是指针pa的值,所以会报错。

const修饰指针

int a = 1;
int b = 2;
const int * const pa = &a;
*pa = 3;  //报错
pa = &b; //报错

此时指针自身的值无法改变,指针指向的地址的内容也无法改变。
*pa=3;和pa=&b;在试图通过指针pa修改a的值和pa自身的值时都会报错。

上一篇下一篇

猜你喜欢

热点阅读