C++读书笔记—常量指针的使用注意点

在使用常量指针时,应该要明确以下3个问题:

● 指针 (地址) 本身是常量?

● 指针所指向的内容是常量?

● 指针本身和所指向的内容是常量?

常量指针通常有以下几种形式:

(1) char * const a;

(2) char const *a;

(3) const char  *a;

(4) const char  *const a;

第(1) 种形式表示字符指针a本身是常量,但是a所指向的内存空间数据是可以改变的,这种定义方式,注意定义时一定要初始化

第(2) 种形式表示字符指针a所指向的内存空间数据是常量,不可以改变,但是指针的本身是可以改变的

第(3)种形式与第(2)种形式相同。

第(4)形式表示字符指针a本身是常量,但是a所指向的内存空间数据也是常量,这种形式定义时一定要初始化。

示例:

/******************************
  常量指针程序分析
*******************************/
#include <iostream>
using namespace std;
int main()
{
char ch1 = 'a';
char ch2 = 'b';
char const *p_ch;
p_ch = &ch1;

cout << *p_ch << endl;

p_ch = &ch2;
cout << *p_ch << endl;

*p_ch = 'c';
cout << *p_ch << endl;
return 0;

}

编译之后会出现错误:

  In function ‘int main()’:

  错误:assignment of read-only location

出现错误的原因便是*p_ch的值改变了,但是*p_ch的地址是可以改变的

猜你喜欢

转载自blog.csdn.net/xiaonan153/article/details/80789173