您的当前位置:首页正文

p是一个指向指针的指针。为何printf("%s“,* p)和printf("%d",* p)输出的值不同?

2012-03-27 来源:易榕旅网

有网友碰到这样的问题“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很难实现。

显示全文