const char*是指向常量的指針,而不是指針本身為常量,可以不被初始化.該指針可以指向常量也可以指向變量,只是從該指針的角度而言,它所指向的是常量,
通過該指針不能修改它所指向的數據.
1.const char*是不能直接賦值到char*的,這樣編譯都不能通過,理由:假如可以的話,那么通過char*就可以修改const char指向的內容了,這是不允許的.所以char*要另外開辟新的空間。
#include <iostream>
using namespace std;
void main(){
const char* cpc="abcde";
char* pc=new char[100];
strcpy(pc,cpc);
cout<<pc<<endl;
}
2.char*到 const char*直接賦值就可以了
const char* cpc;
char* pc="abcde";
cpc=pc;
二、指針常量,常量指針
1. 什么是指針常量?指針常量即指針類型的常量。
例:char *const name1="John";
name1="abc"; //錯誤,name1指針,不能變,一個指針類型的變量,存放的是地址,所以不能把'"abc"的地址賦給name1
char * name2= name1; //可以
char * name2= name1; //可以
2. 什么是常量指針?常量指針即是指向常量的指針,指針的值可以改變,指針所指的地址中的內容為常量不能改變,
例:const char *name1="John";
char s[]="abc"; name1=s; //正確,name1存放的地址可以改變
char * name2= name1; //不可以,因為name2 和 name1存放的是同一塊地址,如果name2地址中的內容改了,則name1的內容也改了,那么name1就不再是指向常量的指針了。
char * name2= name1; //不可以,因為name2 和 name1存放的是同一塊地址,如果name2地址中的內容改了,則name1的內容也改了,那么name1就不再是指向常量的指針了。
轉自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/13/1776613.html