zoukankan      html  css  js  c++  java
  • 字符指针赋值探究小结

    1, 字符指针有初始值时,不能修改其中字符的值

    #include<iostream>
    using namespace std;
    int main()
    {
    	char *p1 = "nihao";//字符指针赋值给字符指针只能读不能修改字符的值
    	char *p2 = p1;
    	p1[0] = 'm';//尝试修改,会报错
    	return 0;
    }
    

    会报错:
    在这里插入图片描述

    2,字符指针赋值给另外一个字符指针,接受字符串的指针也只能进行读取操作。

    #include<iostream>
    using namespace std;
    int main()
    {
    	char *p1 = "nihao";//字符指针赋值给字符指针只能读不能修改字符的值
    	char *p2 = p1;
    	p2[0] = 'm';//尝试修改,会报错
    	return 0;
    }
    

    同样报错:访问权限的问题
    在这里插入图片描述
    3,如果想要对字符指针里面的值进行操作怎么办呢?
    看例子:
    1)用C语言中strcpy函数

    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    using namespace std;
    int main()
    {
    	char *p1 = "nihao";
    	char *p2=new char[sizeof(p1)+1];//new 开辟一段新的内存,注意要加上1,要加上字符串末尾‘’
    	strcpy(p2, p1);//调用字符串copy函数
    	p2[0] = 'm';//对新开辟的内存进行操作
    	cout << p2<<endl;//输出操作后的结果
    	cout << p1<<endl;//对原来字符串没有影响,原来字符串可以看做常量,不能修改。
    	
    }
    

    2)可以用C++中string 类解决

    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
    	string a= "nihao";
    	string b = a;
    	b[2] = 'M';//将一个string a赋值给另外一个string b后,可以对b进行操作,对原来那个string a类没影响。
    	/*a[1] = 'M';*/
    	cout << b<<endl;//输出操作结果
    	cout << a << endl;//对原来那个string a类没影响,验证结果
    	
    }
    

    在这里插入图片描述

    补充:字符串小结

    1.string 类不能赋值字符串指针
    2.字符串指针可以赋值给string类
    3.string 类有初始值后不能看做常量,其中的值也可以修改。(这点和字符指针常量做区分!!)
    4.将一个string a赋值给另外一个string b后,可以对b进行操作,对原来那个string a类没影响

    --不忘初心,不负期许
  • 相关阅读:
    CLSCompliantAttribute
    杂言
    批处理修改目录的隐藏属性
    unittest基本用法
    unittest跳过用例
    MySQL流程控制结构
    MySQL视图
    MySQL函数
    unittest断言 & 数据驱动
    PLSQL
  • 原文地址:https://www.cnblogs.com/-believe-me/p/12028382.html
Copyright © 2011-2022 走看看