簡體   English   中英

帶有const char的puts()問題

[英]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 + 6msg[6].

根據您的代碼, msg+6char * ,而msg[6]代表char

puts()手冊頁中引用,語法為

int puts(const char *s);

因此, puts()的參數必須是const char * ,而不是char

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM