字符串指针赋值小结

字符串指针赋值小结字符指针赋值探究小结1,字符指针有初始值时,不能修改其中字符的值#include<iostream>usingnamespacestd;intmain(){ char*p1=”nihao”;//字符指针赋值给字符指针只能读不能修改字符的值 …

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

字符指针赋值探究小结

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类没影响

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157703.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • micropython教程(Python集成开发环境)

    本文旨在通过一个简单的demo,介绍基于Python3、PyQT5的环境下开发桌面应用程序的一种方案,当然开发Python的桌面应用程序不止是PyQT这一种方案,还可以使用Python自带的Tkinter来实现。本文目录:1.安装依赖环境2.安装Eric63.配置Eric4.创建窗口应用4.1创建窗体UI4.2实现代码逻辑参考资料:1.安装依赖环境Eric6官网:htt…

    2022年4月17日
    106
  • 撸明白分布式事务(四)

    撸明白分布式事务(四)前言在分布式系统中,消息队列在服务端的架构中的地位非常重要,主要解决异步处理、系统解耦、流量削峰等场景。多个系统之间如果同步通信很容易造成阻塞,同时会将这些系统会耦合在一起。因此,引入了消息队列,一方面解决了同步通信机制造成的阻塞,另一方面通过消息队列进行业务解耦。简单的服务间调用引入mq如下图所示可靠事件模式可靠事件模式,通过引入可靠的消息队列,只要保证当前的可靠事件投递并且消息队列确保事件传递至少一次,那么订阅这个事件的消费者保证事件能够在自己的业务内被消费即可。这里,请读者思考,是否.

    2022年8月22日
    6
  • Istio安装「建议收藏」

    1、安装Istio自定义资源定义kubectlapply-finstall/kubernetes/helm/istio/templates/crds.yamlcustomresourcedefinition.apiextensions.k8s.io/virtualservices.networking.istio.iocreatedcustomresourcedefinition….

    2022年4月17日
    34
  • TiKv扩容_ksg变压器

    TiKv扩容_ksg变压器TiKV节点在线扩容

    2022年9月24日
    2
  • Ubuntu16.04安装中文输入法_Ubuntu触摸板驱动

    Ubuntu16.04安装中文输入法_Ubuntu触摸板驱动最近安装了ubuntu18.10,但是不能使用中文输入法。准备试一试搜狗输入法。但是无法安装成功。就准备使用系统自带的输入法第一步:安装自带中文输入法在设置里选择region&language选择instll/Re…

    2022年9月26日
    3
  • 用js来实现那些数据结构08(链表02-双向链表)

    其实无论在任何语言中,一种数据结构往往会有很多的延伸和变种以应对不同场景的需要。其实前面我们所学过的栈和队列也是可以用链表来实现的。有兴趣的小伙伴可以自己尝试着去实现以下。有点跑题了…,我们还是

    2022年3月25日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号