c语言中输出时用P还是*p的问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 06:52:33
以下是两端程序;
第一段:int *p="hello"; printf("%s",p);这里的输出用p,而不是*p
第二段:int c=55;int*p=&c;printf("%d",*p);这里要用*p

二者差别在哪里?书上说指针变量p都是指向一个地址的,为什么输出用的不一样?知道的请赐教!谢谢!

“字符串”,即%s所要求的类型是字符指针,即串开始的地址,串首字符的地址;
而%d要求的类型是整数,不是整数指针,而是整数指针所指的内容,所以要用*

这是字符串和整数在内存中不一样造成的,第一段程序拿到的是字符串的首地址,所以仍然可以当作字符串用。但是int的地址则不是原来的int了。