2014-09-02 60 views
-3
void skip(char *msg) 
{ 
    puts(msg+6); 
} 

char *message="Don't call me"; 
skip(message); 

我的疑問是爲什麼我們不使用 puts(*(msg + 6))來顯示第7個字符以後的文本;
根據我(MSG + 6) 指的是內存和*(MSG + 6)含量傳遞數組中的字符以運行c

+5

是的,但'puts'想要'記憶'(或者說,一個指針)。 '*(msg + 6)'只是一個字符,不是一個字符串。 – Kninnug 2014-09-02 19:23:57

+0

那麼printf(「%s」,msg + 6)呢? – sandy 2014-09-02 19:25:58

+0

@sandy:'int printf(const char * restrict format,...);' – Brian 2014-09-02 19:28:09

回答

-1

這是你可以找到在把手冊:

INT看跌期權(爲const char * S);

正如您所看到的,它也期望指向內容的指針作爲參數,而不是實際值。

0

*msg本質上是對單個字符的引用,而不是字符串的引用。由於這個char *char[]基本上是一樣的東西,你不需要在C中取消引用字符指針,因爲編譯器自動從給定的基地址打印完全字符串直到'\ 0'沒有得到。你也可以參考this瞭解更多信息。

+0

那幫助....感謝 – sandy 2014-09-02 19:53:08

+0

@vikash你可以請詳細說明你的聲明... char *和char []本質上是一樣的 – sandy 2014-09-03 07:08:31

+0

@sandy這將幫助你http://stackoverflow.com/questions/20347170/char-array-and-char-array – 2014-09-03 15:58:07