const与指针的三种形式

使用指针时涉及到两个对象:该指针本身和被它所指的对象。

将一个指针的声明用const“预先固定”将使那个对象而不是使这个指针成为常量。要将指针本身而不是被指对象声明为常量,必须使用声明运算符*const

所以出现在*之前的const是作为基础类型的一部:

char *const cp ;  //指向char的const指针

  

char const *pc1; //指向const char指针
const char *pc2;//指向const char的指针(这两个声明是等同的)

 

const char * const pc3//指向const char的const指针

 

从右向左的记忆方式:

char *const cp ;

cp is a const point to char; 因此cp不能指向别的字符串,但可以修改其指向的内容

char const *pc1;

pc1 is a point to const char; 因此pc2不能修改字符串的内容,但是可以指向其他字符串

const char * const pc3

pc3 is a const point to const point;因此pc3不能修改字符串的内容,也不能修改指向

 

#include<iostream>
using namespace std;
void main()
{
char a[] = {"ABC"};
	char *const cp = a;//cp is a const point to char;
	char const *pc2 = "DEF";//pc2 is a point to const char
	const char *pc3 = "GHI";
	cp[0] = 'Z';//cp修改指向内容
	pc2 = pc3;//pc2修改指向
	cout<<cp<<endl;
	cout<<pc2<<endl;
	cout<<pc3<<endl;
	cout<<a<<endl;
}

结果如下

 

a[]的内容已经被修改,pc2本来指向“EDF”,更改后指向“GHI”

 

posted @ 2019-01-24 14:49  C_hp  阅读(988)  评论(0编辑  收藏  举报