int main() {
char test[15] = "Hallo World";
test[1] = *"e";
}
要将第二个字母更改为e
,我必须遵循字符串"e"
。我找不到任何关于为什么会这样的信息。如果我不取消引用字符串"e"
,则测试最终会变为"H$llo World"
。有人可以启发我吗?
答案 0 :(得分:1)
C中的字符文字拼写为撇号:
test[1] = 'e';
当然,您可以通过任意数量的产生字符值的混淆,复杂的表达式,但这是实现预期行为的最直接和最直接的方法。
答案 1 :(得分:1)
在此代码段中
int main() {
char test[15] = "Hallo World";
test[1] = *"e";
}
"e"
是一个字符串文字,其类型为char[2]
,它是一个包含两个字符'e'
和终止零'\0'
您可以使用字符文字'e'
代替字符串文字。在这种情况下,你可以写
test[1] = 'e';
对于字符串文字,表达式*"e"
等同于"e"[0]
,它返回与字符串文字对应的数组的第一个字符。
考虑到有时在C中使用了一些字符串文字的清单常量。例如
#define YES_NO "y/n"
在这种情况下,如果您遇到代码
,就没有什么奇怪的了if ( c == *YES_NO ) { /* some stuff */ }
或 if(c == YES_NO [0]){/ * some stuff * /}