我无法理解c如何使用puts()来显示消息的各个部分。我认为等效的两种方法与函数的工作方式不同。例如
void skippie(char *msg)
{
puts(msg + 6);
}
char *msg = "Don't call me!";
skippie(msg);
这个编译很好,但这不是
void skippie(char *msg)
{
puts(msg[6]);
}
char *msg = "Don't call me!";
skippie(msg);
puts()如何区分两者并且只编译一个?编译器抱怨它想要一个" const" char,但即使我尝试使用该语法也失败了。有谁能解释一下?
答案 0 :(得分:1)
索引运算符也取消引用指针,所以
msg[6]
相当于*(msg + 6)
,而不是msg + 6
。
此外,您无法将const char*
传递给函数,而期望char*
。即,您还必须更新功能签名。
答案 1 :(得分:0)
msg + 6
与msg[6].
根据您的代码,msg+6
为char *
,而msg[6]
代表char
。
从puts()
的{{3}}引用,语法为
int puts(const char *s);
所以,puts()
的论点必须是const char *
,而不是char
。