2014-09-02 42 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