字符数组初始化以及一些字符字符串和 C 差异

char array initialization and some char string and c difference

本文关键字:字符 字符串 差异 数组 初始化      更新时间:2023-10-16

我看到一些代码是这样写的:

char str[256] = {0};

char str[256] = {1};

当前一种情况时,我使用

printf("%s", str);

什么都不给,

这是否意味着将所有 str[0] 都交给 str[256] 所有值 1?
当后者时,STDIO 给一个 ASCII 微笑字符。

此外,两者之间有什么区别

char s[256] = {0};
printf("%c", s[1]);

它没有任何stdout


char s[256] = {0};
printf("%s", s[1]);

它给出一个(空)

我不明白,因为我是 c 字符数组和 c 指针的初学者。

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

char str[256] = {0};

这个初始化第一个1,其余的初始化0

char str[256] = {1};

关于printf的行为,"%c"期望一个单一的char。你把它传递0,这是NUL(字符串终止),所以它不打印任何内容。 "%s" 期望char*具有以 nul 结尾的字符串中的第一个字符。你给它传递一个值为 0 的单个char,它将其解释为空指针。