IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 字符串--字符是怎么变成字符串的,让我们一探究竟 -> 正文阅读

[C++知识库]字符串--字符是怎么变成字符串的,让我们一探究竟


字符串的长相

"hello world!"!

这样一串**使得程序员诞生的代码**,就是字符串

字符串的特点

我么来看看它的特点,首先它拥有的不是一个元素,还有被双引号包裹着
没错,这种由双引号引起来的一串字符称为字符串字面值,或者简称**字符串**

注:字符串的结束标志是一个**\0的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串内容**

字符串的储存

c语言中没有专门存储字符串的类型
我们可以用字符数组来进行存储

#include <stdio.h>
int main()
{	
	char arr[] = "abcdef";//创建一个字符数组
    //[]表示没有给这个数组定义元素个数,它的元素个数由后面的内容决定
	return 0;
}

我们用调试来观察一下它拥有几个元素
在调试监视中,我们可以看到这个数组拥有7个元素,包括\0,这说明字符串在结尾的时候隐藏了一个\0\0是字符串的结束标志
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dhtGEC1R-1639578527812)(C:\Users\fmshixiang\AppData\Roaming\Typora\typora-user-images\image-20211215184110898.png)]

\0在字符串中的作用

通过printf来探查字符串中\0的作用

我们先创建两个字符数组 (""括起来的是字符串,’'括起来的是字符,%s表示的是打印字符串)

#include<stdio.h>
int main()
{
	char arr1[] = { "hello world!\n" };//定义字符数组,数组里面存放字符串
	char arr2[] ={'h','e','l','l','o',' ','w','o','r','l','d','!','\n' };//定义字符数组,数组里面存放字符
	printf("%s", arr1);
	printf("%s", arr2);
	return 0;
}

我们将程序执行起来发现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jIuoYcir-1639578527814)(C:\Users\fmshixiang\AppData\Roaming\Typora\typora-user-images\image-20211215220937338.png)]

数组arr1打印出来正常,而**数组arr2打印出来的结果后面有一串乱码**

这是由于我们使用了%s进行打印,%s是用来打印字符串的,当我们打印字符串的时候,需要找到\0(字符串的结束标志),才会停止打印,而**arr2中没有\0,所以printf会一直往后面打印,直到找到\0为之**

通过strlen来探查字符串中\0的作用

我们对上面代码进行了改进

#include<stdio.h>
#include<string.h>//头文件,包含一系列字符串的库函数
int main()
{
	char arr1[] = { "hello world!\n" };
	char arr2[] = { 'h','e','l','l','o',' ','w','o','r','l','d','!','\n' };
	printf("%d\n", strlen(arr1));
	printf("%d\n", strlen(arr2));
	return 0;
}

打印出来的结果为13和46,arr2为随机值,这是因为arr2没有\0,所以一直读取字符直到读取到\0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-evMsj66Q-1639578527815)(C:\Users\fmshixiang\AppData\Roaming\Typora\typora-user-images\image-20211215222521154.png)]

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:29:31  更:2021-12-16 17:31:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:00:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码