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; //可以
2. 什么是常量指針?常量指針即是指向常量的指針,指針的值可以改變,指針所指的地址中的內容為常量不能改變,
例:const char *name1="John";
    char s[]="abc"; name1=s; //正確,name1存放的地址可以改變
    char * name2= name1; //不可以,因為name2 和 name1存放的是同一塊地址,如果name2地址中的內容改了,則name1的內容也改了,那么name1就不再是指向常量的指針了。
 
轉自:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/13/1776613.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM