好的,所以我正在遵循 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';