有网友碰到这样的问题“p是一个指向指针的指针。为何printf("%s“,* p)和printf("%d",* p)输出的值不同?”。小编为您整理了以下解决方案,希望对您有帮助:
解决方案1:
我想你搞错了,第一个printf输出的是一串数字。第二个printf输出字母,因为你设置了输出的格式,第一个printf("%d\n",* p);输出的是整数,其实“Follow me“在内存中的地址。
第一个 printf("%s\n",* p);要求输出的是字符串,这样就输出了字母了。下面几个的输出也是相同的原理。
而利用cout输出时,由于C++可以自己匹配,所以它输出的是字符串。
解决方案2:
%s表示输出p指向的地址的内容
%d表示输出p的地址,并且以10进制表示
解决方案3:
p– >a,结构体指针名– >成员名,指针存放s的地址,所以p指向s。%d是十进制
解决方案4:
你用%d来输出的话,输出的应该是字符的ascii。如果想打印字符,要使用%c输出 。
但是因为你的字符串都是不定长的,用%c很难实现。