在下面两个c程序中,为什么第一个printf输出写的是*p,而第二个是p?

2025-02-26 00:26:40
推荐回答(3个)
回答1:

#include
void main()
{char *p="myname";
for(;*p!='\0';p++)
printf("%c",*p); //*p 表示单个字符。。所以用了for循环来输出
}
////////////////////////////////
#include
void main()
{char *p="myname";
printf("%c",p); //p是字符串的首地址,,所以可以输出,不过你这里写错了,应该是
printf("%s",p); //这里不同的。
}

回答2:

是m这个字符所在的地址。

第二个p表示char*,应该是一个32位地址值,超过%c的范围,什么也不会输出。

回答3:

p++)
printf("%c";
/
printf("%c";//%s"//\0';///
#include
////
void
main()
{char
*p="myname";
void
main()
{char
*p="myname";////
for(;*p;/p是字符串的首地址,;//!='///*p
表示单个字符。,应该是
printf("//
///////,所以可以输出,不过你这里写错了