【C语言】字符串简介

举报
謓泽 发表于 2023/09/09 15:01:47 2023/09/09
【摘要】 这种由字符由双引号,引起来的一串字符被称之为字符串字面值,简称为:字符串 😀

字符串简介

"hello Cyuyan\n"
  • 这种由字符由双引号,引起来的一串字符被称之为字符串字面值,简称为:字符串 😀
  • 双引号不是字符串的一部分。双引号仅告知编译器它括起来的是字符串
  • 注:字符串的结束标志是一个反斜杠(\0)的转义字符。在计算机字符串长度的时候反斜杠(\0)是不算做字符串的内容当中的。
  • 说的简单一点的话:字符串就是一串字符,双引号括起来的一串字符
  • 双引号不是字符串的一部分。双引号仅告知编译器它括起来的是字符 串,正如单引号用于标识单个字符一样。

证明字符串当中有\0

  • 字符串是一串字符也就是多个字符,多个字符要存起来的话就需要用到一个概念是:字符数组 — 数组是一组相同类型的元素
  • 那么我们就来证明下在字符串数组当中的字符串是不是会存在反斜杠(\0)
char arr[] = "hello C";

从这里可以看出总共有⑦个元素,这里本来只有⑥个字符的。其实这里在字符当中隐藏当中存放了一个反斜杠\0,在上面图中可以看到最后有'\0'.总的来说就是:字符串在结尾的时候隐藏了一个'\0'.

反斜杠(\0)是字符串当中的结束标志!


两种形式区别

用代码给大家看看:如下实例:

#include<stdio.h>
int main(void)
{
	char arr1[] = "helloC";
	char arr2[] = { 'h', 'e', 'l', 'l', 'o', 'c' };

	printf("arr1 = %s\n", arr1);
	printf("arr2 = %s\n", arr2);

    return 0;
}
  • 首先:用调试当中监视窗口给大家看看区别!

不知道大家发现没有当我们是arr1数组的时候在最后当中是有反斜杠(\0),但是当我们在arr2数组的时候它是没有反斜杠(\0)的。

  • 其次:再运行结果给大家看看区别!

从这里我们打印的结果当中可以看出来是不一样的,第一种我们打印的时候只打印helloC,第二种的时候在打印的时候后面出现了乱码!那么为什么在第二种的时候会出现这个。在第一个arr1数组当中存放的内存当中存放了helloC\0,这就是我们arr1数组当中存放的内容。对于arr2数组里面的内容也是存放的内存块里面存放的是helloc,大家注意下我那个粗体字的区别。当我打印的时候arr1数组是因为后面有一个反斜杠(\0)让字符串停下来了,而arr2数组当中没有反斜杠(\0)后面放的是什么我们是完全不知道的。所以,后面空间的内容是未知的。对于未知的内容,那我们打印的内容自然是不知道的从而打印出来了乱码。而arr1数组当中有反斜杠(\0)的时候那么就知道要停下来了。

  • 那么当我们主动给这个arr2数组字符串+上反斜杠(\0)的时候大家来看看结果:
#include<stdio.h>
int main(void)
{
	char arr1[] = "helloC";
	char arr2[] = { 'h', 'e', 'l', 'l', 'o', 'c','\0'};

	printf("arr1 = %s\n", arr1);
	printf("arr2 = %s\n", arr2);
    return 0;
}
  • 运行结果: 

这个情况又再次充分的证明了字符串的结束标志是反斜杠(\0),对于字符串来说它的结束标志是非常重要的,好好利用这一点可以让你的程序效果更上一层楼。


strlen库函数 

strlen的作用是:计算字符串 str(要计算长度的字符串 的长度!

#include<string.h> 提供strlen()函数的原型。

string.h头文件包含多个与字符串相关的函数原型!

声明:size_t strlen(const char *str)

实际演示strlen()函数的用法 :

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[50];

    strcpy(str, "I always like C language");

    int len = strlen(str);
    printf("|%s| 的长度是:|%d|\n", str, len);

    return(0);
}
  • 当上面的代码被编译和执行时,它会产生下列结果:

  • 在这里有strcpy的函数作用: 复制字符串📗
  • 声明:char *strcpy(char *dest, const char *src)
  • dest – 指向用于存储复制内容的目标数组
  • src – 要复制的字符串
  • 注意:当我们用字符串函数求长度的时候反斜杠(\0)是不算长度的。

当然C语言还有大量的字符串函数,这个等以后会跟大家说的,现在我们知识初始即可! 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。