C语言中字符串的结束标志是什么

2023-05-16

C语言中字符串的结束标志是【'\0'】。C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串,字符串总是以【'\0'】作为结束符。

'\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。'\0'就是 字符串结束标志。

'\0'是转译字符,意思是告诉编译器,这不是字符0,而是空字符。空字符\0对应的二进制为00000000,而数字0为00110000。

原来,在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

说明:

把一个字符串赋值给数组:u8 str1[]={"cxjr.21ic.org"}; 实际上数组str1在内存中的实际存放情况为:c x j r . 2 1 i c . o r g '\0' 。这后面的'\0'是由C编译系统自动加上的。所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。把字符数组str1中的字符串拷贝到字符数组str2中。串结束标志'\0'也一同拷贝。

个案:

1、当数组长度不够。假设我们指定了数组长度,如:u8 str1[13]={"cxjr.21ic.org"}; 由于字符组str1的长度为13,所以后面的信息会丢失,即'\0'丢失。

2、如果在给数组赋值时,把每个字符单独用引号括起来。也会丢失'\0'。如:u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g'}; 如果希望数组以'\0'结束,则可以写成以下三者之一:

u8 str1[]={"cxjr.21ic.org"}; //字符串赋值

u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g','\0'}; //人工添加

u8 str1[14]={'c','x','j','r','.','2','1','i','c','.','o','r','g'}; //故意给数组预留一个空位

代码示例:

#include 

#include 

#include 

using namespace std;

int main()

{    char s[] = "10";

    printf("%s\n", s);

    printf("s[1]:%d\n", s[1]);

    printf("s[2]:%d\n", s[2]);

    printf("s[1]:%c\n", s[1]);

    printf("s[2]:%c\n", s[2]);    char u[] = {"hello"};

    cout << sizeof(u) / sizeof(*u) << endl;    char v[] = "hello";

    cout << sizeof(v) / sizeof(*v) << endl;

}

运行结果:

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言中字符串的结束标志是什么 的相关文章

随机推荐

  • Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决记录

    转载请标明出处 xff1a http blog csdn net lxk 1993 article details 50511172 本文出自 lxk 1993的博客 xff1b 新的排版地址 https blog csdn net lxk
  • Android Studio里面Failed to resolve: 包名 解决方式

    Android Studio里面Failed to resolve 包名 解决方式 就像以下这种问题 Failed to resolve io reactivex rxjava 1 1 2 Failed to resolve io reac
  • 自定义View实战(一) 汽车速度仪表盘

    自定义View实战 xff08 一 xff09 汽车速度仪表盘 转载请以链接形式标明出处 xff1a http blog csdn net lxk 1993 article details 51373269 本文出自 lxk 1993的博客
  • java.lang.UnsatisfiedLinkError 解决方法

    就像这样的错误 java lang UnsatisfiedLinkError dalvik system PathClassLoader DexPathList zip file 34 data app com pckgname live
  • 关于魅族手机 安装APP提示安装失败 更新包不兼容的解决方法

    转载请以链接形式标明出处 xff1a http blog csdn net lxk 1993 article details 52943855 本文出自 lxk 1993的博客 xff1b 关于魅族手机安装app提示安装失败 xff0c 更
  • 2016过去了

    15年本来准备些总结的 xff0c 最后又不了了之了 xff0c 这次2016也拖到今天才来写 拖延症患者 2016年 前半年在一家外包公司工作 xff0c 期间做了几个外包项目 xff0c 但是并没有什么用户在用 xff0c 做了等于白做
  • 视频驱动V4L2子系统驱动架构-框架

    V4L2驱动框架 v4l2驱动架构如图所示 xff0c v4l2也就是video for linux two xff0c 那么也就是说还有One了 xff0c v4l2前面还有v4l 图中芯片模块对应Soc的各个子模块 xff0c vide
  • ROS_gazebo 设置/获取模型状态 set_model_state/get_model_state

    版权声明 xff1a 本文为CSDN博主 penge666 的原创文章 xff0c 遵循CC 4 0 by sa版权协议 xff0c 转载请附上原文出处链接及本声明 原文链接 xff1a https blog csdn net penge6
  • ROS中package.xml文件标签

    原地址 xff1a https www cnblogs com qixianyu p 6669687 html 目录 概述格式2 xff08 推荐 xff09 基本结构所需标签依赖关系Metapackages附加标签格式1 xff08 遗产
  • Linux驱动开发(十七)---树莓派PWM驱动

    前文回顾 Linux驱动开发 xff08 一 xff09 环境搭建与hello world Linux驱动开发 xff08 二 xff09 驱动与设备的分离设计 Linux驱动开发 xff08 三 xff09 设备树 Linux驱动开发 x
  • Gazebo仿真中.sdf/.world文件标签

    sdf 文件 详细代码 xff1a lt xml version 61 34 1 0 34 gt lt sdf version 61 34 1 5 34 gt lt model name 61 34 cafe 34 gt lt static
  • Jetson TX2核心板系统烧录、烧写

    1 从官网https developer nvidia com embedded jetpack 中下载sdkmanager xff0c 需登录事先在官网注册的账号 xff08 免费 xff09 xff0c 但Jetpack4 3版本一直无
  • C语言实现汉诺塔详细步骤(递归与非递归)及代码

    前言 C语言汉诺塔问题是一个经典的问题 xff0c 在学习编程的初学者中非常流行 它涉及到了递归的思想 xff0c 能够帮助我们理解递归的基本原理 首先 xff0c 我们来了解一下汉诺塔的问题 汉诺塔问题是指 xff1a 有三根柱子A B
  • C语言 | 输出月份的英文

    要成为绝世高手 xff0c 并非一朝一夕 xff0c 除非是天生武学奇才 xff0c 但是这种人 万中无一 包租婆 这道理放在C语言学习上也一并受用 在编程方面有着天赋异禀的人毕竟是少数 xff0c 我们大多数人想要从C语言小白进阶到高手
  • C语言实例:3个数从小到大排序

    需求 任意输入3个整数 xff0c 对这3个整数由小到大进行排序 xff0c 并将排序后的结果输出 源码 64 author 冲哥 64 date 2021 5 7 13 37 64 description 实现对这3个整数由小到大进行排序
  • C 预处理指令

    C 预处理指令 C语言 C 语言的预处理器 用于在编译器处理程序之前预扫描源代码 xff0c 完成头文件的包含 宏扩展 条件编译 行控制 xff08 line control xff09 等操作 编译的四个阶段 C语言标准规定 xff0c
  • c语言怎么输入3个数输出最大值

    方法 xff1a 首先使用scanf 接收从键盘输入的三个数 xff1b 然后使用 if else 语句比较三个数的大小 xff0c 获得最大值 xff1b 最后使用print 函数将最大值输出即可 c语言输入3个数输出最大值 includ
  • C 运算符中不能重载的是哪些

    C 运算符中不能重载的有 xff1a 1 条件运算符 xff1b 2 成员访问运算符 xff1b 3 域运算符 xff1b 4 长度运算符 sizeof xff1b 5 成员指针访问运算符 gt 和 重载 xff1a 让操作符可以有新的语义
  • scanf在c语言中的作用是什么?

    scanf 函数 scanf 是C语言中的一个输入函数 与printf函数一样 xff0c 都被声明在头文件stdio h里 xff0c 因此在使用scanf函数时要加上 include xff08 在有一些实现中 xff0c printf
  • C语言中字符串的结束标志是什么

    C语言中字符串的结束标志是 39 0 39 C语言中没有专门的字符串变量 xff0c 通常用一个字符数组来存放一个字符串 xff0c 字符串总是以 39 0 39 作为结束符 39 0 39 就是8位的00000000 xff0c 因为字符