关于C++ 输出函数cout 与 printf 的区别

我知道在C++中cout和printf都能用于输出,但是他俩肯定在输出的方式、细节上有差别的。我想问指针,char*p=“abcd”按我的理解p就是存储地址的变量,输出p... 我知道在C++中cout 和printf 都能用于输出,但是他俩肯定在输出的方式、细节上有差别的。
我想问 指针,char* p=“abcd” 按我的理解p就是存储地址的变量,输出p就应该是输出存储“abcd”的空间首地址。
用printf则输出的是存储“abcd”的空间首地址(这和我预想的一样),用cout输出p则整个字符数组都输出了,这是为什么?他们两个的输出方式到底有什么差别。以至于输出同一个变量会得到不同的结果?
比如:
#include<iostream>
#include<stdio.h>
using namespace std;
int main () {
char* p="abcd";
cout<<p<<" "<<*p;//这里p输出的是abcd完整的字符串,而*p则输出的是第一个字符a。
printf("%x %c",p,*p);//这里p则输出的是存储“abcd”的空间首地址,*p则输出第一个字符a。
return 0;
}
展开
 我来答
icecoobe
2011-07-27 · TA获得超过1989个赞
知道小有建树答主
回答量:1058
采纳率:100%
帮助的人:1093万
展开全部
先回答两者的异同
1.两者都有自己的缓冲区
2.如果用printf,需要#include <stdio.h>;
如果用cout<<,需要#include <iostream.h>,功能一样;
不过printf更严谨一些,比如它会限制输 出类型。
3. cout慢些,安全措施多些,和其它的STL库的合作性也比较好
功能方面,作为标准IO,二者没什么差别,基本你能做的我也能做,而且难度相近
一个是类函数,一个普通c语言函数。
ps:最好不要混用两者,那时printf函数调用会将输出立刻显示在屏幕上,cout不会立刻显示在屏幕上,cout在输出回车或者显示调用cout.flush();或者其他也些情况才刷新缓冲区

cout<<p; 这个是输出p指向的内存地址保存的字符流。。。(如果对流的概念不是很了解的话,就先搜索下c++流 吧)
printf("%x", p); 这个是输出p作为指针变量的值,而p保存的是“abcd”这个字符串在内存中的首地址,你定义的%x输出为十六进制。
不爱到爱
2011-07-29 · TA获得超过296个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:310万
展开全部
你说的这个跟cout,printf无关 输出不同是因为你printf的格式不正确,
应该为printf("%s %c",p,*p)
cout<<p默认帮你进行了格式化,即是%s“”
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2017-09-08 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:863万
展开全部
c中的printf和c++中的cout完成的功能一样,都是输出,书写格式不一样。区别:
1、格式不同int a=6; cout<<a<<endl; printf("%d\n",a);
2、printf需要你告诉它格式(int %d, double %f,char %c)cout不需要。
3、printf是函数。cout是ostream对象,和<<配合使用。
4、printf是变参函数,没有类型检查,不安全。cout是通过运算符重载实现的,安全。
5、如果printf碰到不认识的类型就没办法了,而cout可以自己重载进行扩展。
6、有时候printf比cout灵活。
c++中能使用printf,但是c中不能使用cout,也可以这么说:c++可以完全兼容c的用法,反过来就不行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式