字符指针赋值探究小结

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

#include
using namespace std;
int main()
{
char *p1 = "nihao";//字符指针赋值给字符指针只能读不能修改字符的值
char *p2 = p1;
p1[0] = 'm';//尝试修改,会报错
return 0;
}
会报错:
2,字符指针赋值给另外一个字符指针,接受字符串的指针也只能进行读取操作。
#include
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
using namespace std;
int main()
{
char *p1 = "nihao";
char *p2=new char[sizeof(p1)+1];//new 开辟一段新的内存,注意要加上1,要加上字符串末尾‘#define _CRT_SECURE_NO_WARNINGS
#include
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<cout << p1<
’
strcpy(p2, p1);//调用字符串copy函数
p2[0] = 'm';//对新开辟的内存进行操作
cout << p2<cout << p1<
}
2)可以用C++中string 类解决
#define _CRT_SECURE_NO_WARNINGS
#include
#include
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<cout << a << endl;//对原来那个string a类没影响,验证结果
}
补充:字符串小结
1.string 类不能赋值字符串指针
2.字符串指针可以赋值给string类
3.string 类有初始值后不能看做常量,其中的值也可以修改。(这点和字符指针常量做区分!!)
4.将一个string a赋值给另外一个string b后,可以对b进行操作,对原来那个string a类没影响。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/118023.html