const 指针的简单问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 08:16:03
#include<iostream>
using namespace std;
void main()
{
char c1='a';
char c2='b';
const char *p;
p=&c1;
p=&c2;
cout<<*p<<endl;
}

如上面那个简单的程序,我想明白,定义了一个常指针怎么可以赋值两次.
应该第一次赋c1的地址后就不可以再改变才对吧.
求教.

这里你理解错了
const char *p;
指的是p所指向的内容是常量,并不是p是常量,换句话说这条语句声明了p指向的内容是不能修改的,但p本身可以修改

char const *p;和const char *p;一样

char * const p;刚好相反,它指的是p是常量,而p所指向的内容不是常量!

char const * const p;当然就是说p和p所指向的内容都是常量!

const char *p指的是*p不能被改变,但现在改变的是p