C/C++指针
Posted 小潘的CS学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++指针相关的知识,希望对你有一定的参考价值。
C/C++中const修饰的为常量,即一旦初始化后就不可以在修改,那么在const修饰指针时,位置会有所区别,代表的含义也不相同:
int i = 1;
int j = 1;
int k = 1;
const int *pi = &i;
// *pi = 0; //error pi为一个指向const int类型的指针 不可以通过对指针解引用修改其所指对象的值
pi = &j; //可以修改该指针的指向
int const *pj = &j;
// *pj = 1; //error pj也是一个指向const int类型的指针
pj = &i;
int *const pk = &k;
*pk = 0;
// pk = &i; //error pk是一个const指针 即不可以修改pk的指向但是可以修改指针所指对象的值
const int *const pi_1 = &i;
// pi_1 = &j; //error pi_1是一个指向const int类型的const指针 既不可以修改指向 也不可以修改所指对象的值
// *pi_1 = 0;
int const *const pj_1 = &j;
// pj_1 = &i; //error pi_1是一个指向const int类型的const指针 既不可以修改指向 也不可以修改所指对象的值
// *pj_1 = 0;
上述代码定义了三个变量i,j,k.以不同的const修饰对应的指针,此类const指针应当注意对应的位置,要想弄清楚这些声明的含义一般从右向左阅读.
第9-11行也声明了一个指针pj,pj的修饰符为int const *,表明该指针为const类型,其指向的内容为int类型,即pj为一个指向int类型的const指针,也意味着不可以修改该指针的指向,但可以通过该指针修改所指对象的值.
第13-15行声明的指针pk的修饰符为int *const类型,此类指针的解读需要注意的是const默认作用于左边的修饰符,否则作用于右边的修饰符,因此可以看出pk的const作用于指针运算符*,表明pk是一种const指针,所指的内容为int类型,作用同int const*.
对于最后两种指针const int *const和int const *const,同样先观察const左边的内容然后再看右边的内容,可以得出上述两种指针都是指向常量的常量指针.
以上是关于C/C++指针的主要内容,如果未能解决你的问题,请参考以下文章