char数组初始化和一些char字符串和c的区别

时间:2013-12-17 16:49:26

标签: c++

我看到一些代码写得像这样:

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指针的初学者。

1 个答案:

答案 0 :(得分:2)

这会将所有256个字符初始化为0

char str[256] = {0};

这一个将第一个初始化为1,其余全部初始化为0

char str[256] = {1};

关于printf的行为,"%c"需要一个char。你传递它0,即NUL(字符串终止),所以它什么都不打印。 "%s"期望char*的第一个字符位于以空字符结尾的字符串中。您将一个char传递给值0,它将其解释为空指针。