const char* 和char* 之间的转换
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