代码
char *s="abcd";
printf("%s",s);
为什么不用*s呢?
然而代码
char *p;
int a=5;
p=&a;
printf("%d",*p);
为什么就有*呢??这个地方困惑半个月了,求详解啊!越详细越好,本人新手!!
那么凡是有字符串的时候,如果需要打印字符串就必须用%s格式呗?这个能解释一下吗?是不是指针指向字符串的时候,地址即是字符串?而内容就是具体的字符?这是规定呗?
追答看看printf的解释吧
其实跟着规定走即可
字符串打印到屏幕有两个
printf的%s和puts。他是对内存空间中一块数据打印到屏幕上
他们都是对字符串的首地址(数组的中间也可以,只要是个内存的地址即可)进行操作,以字符串的结束符为结束标志(不管是不是超过你申请的数组的长度)
地址不是字符串,只是表示一块内存数据的开始位置,是一个内存空间的位置即可
太感谢了 非常感谢 谢谢你