C语言基础知识 以及 字符串常量 字符常量的区别

C-风格(c-style string)字符串

C-风格字符串的结尾标定

char dog[8] = { 'b''e', 'a', 'u', 'x','I','I', 'I'};
// not a string!
char cat[8] = {'f', 'a', 't', 'e', 's','I', 'a', '\0'}; 
// a string!

上面dog不是 字符串,而cat才是字符串,关于这些知识点,我总结如下

  1. 只有含有’\0’空字符在末尾的char数组才能被算作字符串
  2. \0的ASCLL码为0。用来标记字符串的结尾
  3. 一般打印字符串的函数在打印字符串时,遇到’\0’时才会停止打印,如dog这个char数组,在打印完’I’后不会停止,直到遇到’\0’才停止
  4. '\0’也算作数组的一位,cat只会打印出7个字符,但是数组长度为8

c-风格字符串的初始化

char cat[8] = {'f', 'a', 't', 'e', 's','I', 'a', '\0'};
char cat[]="fatesIa";
char cat[8]="fatesIa";
char boss[8]="Boze";

上面四个都可以初始化成功,前面三个表达的是同一个字符串,现在主要来说一下第四个。
第四个char数组的长度为8,但是只有5个字符,Boze+\0,那么剩下的位置是什么呢?答案是都补上\0,如下图所示。
在这里插入图片描述

c-风格 字符串常量和字符常量的关系

char shirt_size='S';//合法的语句
char shirt_size="S";//不合法的语句

这个问题的本质就是,在c语言中单引号''和双引号""的区别,下面我们来讲解一下这个区别。

  1. 'S'表示的是字符常量,在ASCLL系统中'S'是83的另外一种写法,对于第一个语句,你可以把它等价于下述语句,下面这两个语句在ASCLL系统中是等价的。
    char shirt_size=83;
    char shirt_size='S'
    
  2. ""表示的是字符串常量"S"表示的是字符S和\0组成的字符串,且"S"表示的是字符串所在的内存地址。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值