程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> string和char*的區別以及const_cast<>()

string和char*的區別以及const_cast<>()

編輯:C++入門知識

首先,string是類,char*屬於基本數據類型

其次,const_cast只能改變指針的const屬性,而不能改變或者去掉本身的const屬性

測試代碼:

 

 

// memcpyTest.cpp : 定義控制台應用程序的入口點。   
//   
  
#include "stdafx.h"   
#include "string"   
  
using namespace  std;  
int _tmain(int argc, _TCHAR* argv[])  
{  
    string Str = "abcd";  
    char *pChar = "mmnddd";  
    //pChar[0]='j';                                     // 出現訪問沖突異常   
  
    //char *pstr1 = Str.c_str();                        //類型異常   
    //const char *pstr1 = Str.c_str();    pstr1[0]='g'; //錯誤   
  
    char *pStr = const_cast<char*>(Str.c_str());        // 去掉const屬性   
    pStr[0]='h';  
  
    char *pchar1 = const_cast<char*>(pChar);            // 去掉const屬性   
    //pchar1[0]='e';                                    // 出現訪問沖突異常,去不掉本身的const屬性   
  
    //若想要去掉必須分配堆空間   
    char *pchar2 = new char[8];  
    //pchar2 = pChar;   
    //pchar2[0]= 'e';//這樣也不行,只是指針指向了同一塊內存區域,這塊區域誰都不能動   
  
    memcpy(pchar2,pChar,sizeof(pchar2)*2);  
    pchar2[strlen(pChar)+1]='\0';  
    pchar2[0]='e';                                     //正確       
  
  
    return 0;  
      

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved