zoukankan      html  css  js  c++  java
  • string和char*的区别以及const_cast<>()

    首先,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]='';
    	pchar2[0]='e';                                     //正确    
    
    
    	return 0;
    	
    }
    
  • 相关阅读:
    手机测试移动端项目
    事件绑定与事件委托
    jq中attr()和prop() 属性的区别
    jq 加载的几种方法
    $(document).height 与$(window).height的区别
    js动画之缓冲运动
    js动画之简单运动二
    js动画之简单运动一
    css浏览器窗口大小
    编程每一天
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3260510.html
Copyright © 2011-2022 走看看