[英]puts() questions with const char
我在理解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”字符,但是即使我嘗試使用該語法,它也會失敗。 誰能解釋一下?
索引運算符還會取消引用指針,因此
msg[6]
等效於*(msg + 6)
,而不是msg + 6
。
此外,您不能將const char*
傳遞給函數,而它需要char*
。 即,您還必須更新功能簽名。
msg + 6
與msg[6].
根據您的代碼, msg+6
是char *
,而msg[6]
代表char
。
從puts()
的手冊頁中引用,語法為
int puts(const char *s);
因此, puts()
的參數必須是const char *
,而不是char
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.