我看到一些代码写得像这样:
char str[256] = {0};
或
char str[256] = {1};
当前一种情况,我用
printf("%s", str);
什么都没有,
这是否意味着将所有str [0]赋予str [256]所有值1?
当latthe stdio给出一个ASCII微笑char。
此外,
之间有什么区别char s[256] = {0};
printf("%c", s[1]);
stdout
char s[256] = {0};
printf("%s", s[1]);
它给出一个(null)
我不明白,因为我是c char数组和c指针的初学者。
答案 0 :(得分:2)
这会将所有256个字符初始化为0
:
char str[256] = {0};
这一个将第一个初始化为1
,其余全部初始化为0
:
char str[256] = {1};
关于printf
的行为,"%c"
需要一个char
。你传递它0
,即NUL
(字符串终止),所以它什么都不打印。 "%s"
期望char*
的第一个字符位于以空字符结尾的字符串中。您将一个char
传递给值0
,它将其解释为空指针。