关于c语言中指针与字符串的一个问题

代码如下
char *str = "This is a string";
printf("%s",str);
输出为”This is a string“,按我的理解,str是一个指向字符串的指针变量,值不就是那个字符串的地址吗?为什么输出时不加*号直接就输出字符串?

这是因为printf语句中使用%s输出时,需要提供一个指向字符串开始位置的指针,你给出的str变量存储了这个指针
如果你要用%c输出这个str指向的那个字符,就需要用*str了,因为str是定义成char *类型的,这个指针指向的数据的类型是字符型的追问

谢谢,我没好好看书,c语言定义字符串原来就两种方法

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-17
输出的是什么,不单单由str或者*str决定,还由前面的格式指示 配合的。

printf("%s",str);第1参数%s指示输出一个字符串,第二参数str指示这个字符串的地址,很自然啊。

你说的如果改成printf("%s",*str);,这是错误的编码,会崩溃,因为字符串的地址被设为了'T'即0x54。你想输出*str,应该写成printf("%c",*str);这样就输出大写T一个字符。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网