100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 二十一天学通C语言:使用const声明指针变量

二十一天学通C语言:使用const声明指针变量

时间:2021-01-10 06:08:20

相关推荐

二十一天学通C语言:使用const声明指针变量

二十一天学通C语言:使用const声明指针变量

本文节选自《21天学通C语言》一书

已经学习了使用限定词const声明变量可以带来很多好处。同样地,限定词const也可以用来声明指针变量。根据const关键字在声明中出现位置的不同,可以得到多种const指针类型,下面将依次进行讲解。为方便表述,以int型代表数据类型名,以p代表变量名。

1.指向const的指针变量

声明指向const的指针变量有以下两种方式:

int const *p

const int * p

由于变量声明中,const和数据类型名的出现次序可以随意排列,因此,以上两种声明表达式是等效的。以上的两个表达式将变量p都声明为指向存储const int型数据的内存空间的指针变量,该类指针指向的内存空间的内容是不可变的。例如,以下操作是错误的:

01 const int a = 1;

02 const int * p1 = &a;

03

04 *p1 = 2;

第4行语句通过赋值表达式改变p1指向的内存空间的内容,而声明中p1指向的内容是不可改变的,因此,该语句是错误的。

2.const型指针变量

int * const p

该表达式声明了一个int型的const指针变量,即该指针变量的值是不可以改变的,也就是说const型指针变量指向的内存空间是固定的,初始化后不能将其指向其他空间。例如,以下操作是错误的:

01 int a = 1;

02 int b = 2;

03 int * const p = &a;

04 *p = 12;/* 正确 */

05 p = &b;/* 错误 */

第4行,对int型const指针变量指向的内存空间赋值是允许的;但是第5行,试图改变const指针变量p的值,将p指向变量b的内存空间,这是错误的,因为const指针的值是不可变的。

3.指向const的const指针变量

const int * const p

该表达式声明了一个指向存放const int型空间的const指针变量,该指针变量的值和该指针指向的空间的值都是不可改变的。以下行为是错误的:

01 int a = 1;

02 int b = 2;

03 int const * const p = &a;

04 *p = 12;/* 错误 */

05 p = &b;/* 错误 */

第4行,试图改变p指向的内存空间的内容,也就是p指向的变量a的值,这是错误的;第5行,试图改变p的值,也是错误的。该指针变量的值及其指向空间的值都是不可改变的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。