字符串指针变量输入输出

void main()
{
   char *p;
   scanf("%s",p);
   printf("%s",?);
}

求助:程序中"?"处用*p不能正常运行,p不是指针代表地址么,但用p可以,怎么回事


是地址
但是它是字符型指针
而%s输出字符串的时候,使用的就是地址
如果你用了* p,只是取到了第一个字符,而不是整个字符串,* p需要用%c输出
如下图

img

望采纳!!!点击回答右侧采纳即可!!在程序中,p是一个指针变量,但是它没有指向任何有效的内存地址,因此使用*p是不安全的,可能会导致程序崩溃。而使用p可以正常运行,因为它只是将p的值(即指针变量的值)作为参数传递给printf函数,而不是将指针变量指向的内存地址作为参数传递给printf函数。