l_ljian 发表于 2019-9-9 21:03:44

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

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

void shuzufuzhi(void)
{
    char aa;                            //初值 0 ‘\000’
    char a[]="world";
    char b = {'a','c','v','b','n','m',',','a','s','d','u','f','g','h','h'};
    strcpy(b,a);
    aa = b;
    printf("%c\n",b);      //调试过程中看到 b【5】是 0‘\000’    但是在控制台输出里面啥都没输出??
}??

superbe 发表于 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前有三个字符宽度的空白。
页: [1]
查看完整版本: c语言中:字符变量定义时未赋值,调试的时候,看到初值是\000?