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