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

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

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

(相关视频推荐:java视频教程)

原来,在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 <iostream>#include <stdio.h>#include <string.h>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;}

运行结果:

e3c9fd51daa05d05465738e00434ffb.png

相关推荐:php培训

更多相关文章

  1. C++如何给二维数组初始化
  2. C语言中数组所占字节怎么算
  3. 在c语言中引用数组元素时,其数组下标的数据类型允许是什么
  4. C语言字符串输出函数puts()的作用是什么
  5. golang中定义不定长数组的方法
  6. golang判断数组是否为空的方法
  7. golang如何删除数组中的元素
  8. golang数组与切片的区别是什么?
  9. golang判断字符串是否数字的方法

随机推荐

  1. PHP和Nginx文件上传大小限制问题
  2. Mac 下使用 clion 调试 PHP 内核源码
  3. PHP在引号前面添加反斜杠及去除反斜杠的
  4. PHP中钩子的理解与实例教程
  5. PHP 核心特性之匿名函数
  6. PHP与Python进行数据交互
  7. php命令行下的常用命令总结
  8. 正确理解 PHP 的重载
  9. 2021最新swoole视频教程推荐(从入门到高级
  10. 匿名函数