为什么我的字符串在 C 中显示美元符号



好的,所以我正在遵循 C 教程,我去输入

char name[4] = "foo";
name[1] = "z";
printf("%s",name);

输出:

f$o

为什么有美元符号?我期待那里有一个"z">

in

char name[4] = "foo";
name[1] = "z";

name 是一个 char 数组,但你分配了一个 char*,所以你会得到它的一部分地址随机产生一个"$">

将第二行替换为

name[1] = 'z';

令人惊讶的是,当您编译该行时没有收到警告

我鼓励您使用以下选项进行编译-Wall -Wextra -pedantic

" "与字符串一起使用。' 与字符一起使用。

char myChar = "h"; // WRONG
char myChar = 'h'; // RIGHT

name[1] 表示一个字符,"Z" 是一个字符串。 所以

name[1] = "z";

应该是:

name[1] = 'z';

最新更新