鱼C论坛

 找回密码
 立即注册
查看: 3554|回复: 1

c语言中:字符变量定义时未赋值,调试的时候,看到初值是\000?

[复制链接]
发表于 2019-9-9 21:03:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
c语言中:字符变量定义时未赋值,调试的时候,看到初值是0'\000'?  '\000'这里的\000是啥意思?
字符串数组被拷贝到另一个字符串数组内,前一个字符串的结束符也是 \000?  为啥不是\0 呢?

void shuzufuzhi(void)
{
    char aa;                            //初值 0 ‘\000’
    char a[]="world";
    char b[15] = {'a','c','v','b','n','m',',','a','s','d','u','f','g','h','h'};
    strcpy(b,a);
    aa = b[5];
    printf("%c\n",b[5]);      //调试过程中看到 b【5】是 0‘\000’    但是在控制台输出里面啥都没输出??
}  ??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-9 23:29:10 | 显示全部楼层
本帖最后由 superbe 于 2019-9-9 23:31 编辑

'\0aa' (a=0~7)应该是八进制表示的ascii码吧。类似还有’\xhh' (h=0~F)是十六进制表示的ascii码。
'\000' 和 '\0' 其实是相等的,都是ascii码为0的字符(ascii表第1个字符)。

由于这个字符为不可见字符,所以实际上输出了也看不出来。试下printf("%c%c%cABCDE",'\000','\000','\000');会发现ABCDE前有三个字符宽度的空白。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 07:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表