字符串指针赋值小结

字符串指针赋值小结字符指针赋值探究小结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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 记录ci框架中定时任务的执行[通俗易懂]

    记录ci框架中定时任务的执行

    2022年2月10日
    44
  • 收集了50道基础的java面试题

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最

    2021年12月23日
    51
  • 什么是hard code

    什么是hard code写死 英文称 hardcode hardcoding 指的是在软体实作上 把输出或输入的相关参数 例如 路径 输出的形式 格式 直接写死在原始码中 而非在执行时期由外界指定的设定 资源 资料 或者格式做出适当回应

    2025年8月2日
    8
  • IdentityServer4系列(05)【授权方式】

    IdentityServer4系列(05)【授权方式】基于角色验证服务器用户 添加新的 claim newClaim JwtClaimType Role 管理员 publicclassT publicstatic TestUser Users newList TestUser newTestUser SubjectId Username alice Passwor TestUser TestUser

    2025年9月29日
    3
  • mysql索引类型和索引方式

    mysql索引类型和索引方式1.什么是索引在MySQL中,索引(index)也叫做“键(key)”,它是存储引擎用于快速找到记录的一种数据结构。2.索引的分类在MySQL中,通常我们所指的索引类型,有以下几种:主键索引(PRIMARYKEY)也简称主键。它可以提高查询效率,并提供唯一性约束。一张表中只能有一个主键。被标志为自动增长的字段一定是主键,但主键不一定是自动增长。一般把主键定义在无意义的字段上(如:编号)…

    2022年5月2日
    76
  • 文件、目录_文件目录表

    文件、目录_文件目录表4.1文件4.1.1文件命名文件是一种抽象机制,它提供了一种方式用来存储信息以及在后面进行读取。可能任何一种机制最重要的特性就是管理对象的命名方式。对用户来说,文件的时间必须隐藏信息的保存方

    2022年8月5日
    7

发表回复

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

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