void skip(char *msg)
{
puts(msg+6);
}
char *message="Don't call me";
skip(message);
我的疑問是爲什麼我們不使用 puts(*(msg + 6))來顯示第7個字符以後的文本;
根據我(MSG + 6) 指的是內存和*(MSG + 6)含量傳遞數組中的字符以運行c
void skip(char *msg)
{
puts(msg+6);
}
char *message="Don't call me";
skip(message);
我的疑問是爲什麼我們不使用 puts(*(msg + 6))來顯示第7個字符以後的文本;
根據我(MSG + 6) 指的是內存和*(MSG + 6)含量傳遞數組中的字符以運行c
這是你可以找到在把手冊:
INT看跌期權(爲const char * S);
正如您所看到的,它也期望指向內容的指針作爲參數,而不是實際值。
*msg
本質上是對單個字符的引用,而不是字符串的引用。由於這個char *
和char[]
基本上是一樣的東西,你不需要在C中取消引用字符指針,因爲編譯器自動從給定的基地址打印完全字符串直到'\ 0'沒有得到。你也可以參考this瞭解更多信息。
是的,但'puts'想要'記憶'(或者說,一個指針)。 '*(msg + 6)'只是一個字符,不是一個字符串。 – Kninnug 2014-09-02 19:23:57
那麼printf(「%s」,msg + 6)呢? – sandy 2014-09-02 19:25:58
@sandy:'int printf(const char * restrict format,...);' – Brian 2014-09-02 19:28:09