字符串指针赋值小结

字符指针赋值探究小结

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

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

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

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

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

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

同样报错:访问权限的问题
在这里插入图片描述
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,要加上字符串末尾‘\0’
	strcpy(p2, p1);//调用字符串copy函数
	p2[0] = 'm';//对新开辟的内存进行操作
	cout << p2<<endl;//输出操作后的结果
	cout << p1<<endl;//对原来字符串没有影响,原来字符串可以看做常量,不能修改。

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述

补充:字符串小结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值