社区
新手乐园
帖子详情
C++的基础问题,请高手指点迷津!
StarLee
2005-12-30 09:34:29
如下程序段输出什么?为什么?
const char *p = "Test";
cout << &p << endl;
cout << p << endl;
cout << *p << endl;
p = "Other";
cout << &p << endl;
cout << p << endl;
cout << *p << endl;
...全文
143
15
打赏
收藏
C++的基础问题,请高手指点迷津!
如下程序段输出什么?为什么? const char *p = "Test"; cout << &p << endl; cout << p << endl; cout << *p << endl; p = "Other"; cout << &p << endl; cout << p << endl; cout << *p << endl;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
StarLee
2006-01-17
打赏
举报
回复
在“我的问题”直接点击链接,打不开,用“管理”却能打开,回复一个试试!
StarLee
2006-01-17
打赏
举报
回复
在“我的问题”直接点击链接,打不开,用“管理”却能打开,回复一个试试!
StarLee
2006-01-17
打赏
举报
回复
在“我的问题”直接点击链接,打不开,用“管理”却能打开,回复一个试试!
StarLee
2005-12-30
打赏
举报
回复
为什么这样的代码输出的却是q的地址呢?
int i = 13;
int *q = &i;
cout << q <<endl;
这跟上面的有什么不同呢?
hiqingqing
2005-12-30
打赏
举报
回复
同意是重载
aniude
2005-12-30
打赏
举报
回复
我把const去掉,两次输出的地址还是一样,为什么?
====>
char *p = "Test";
其实这里p指向的就是常量,就算你不加const系统也会默认的
另外p是地址,存放"Test"的首地址,&p自然是系统分配给p的地址,即指针p的地址
piaochen_2002
2005-12-30
打赏
举报
回复
template <class E, class T = char_traits<E> >
class basic_ostream {
public:
class sentry;
explicit basic_ostream(basic_streambuf<E, T> *sb);
virtual ~ostream();
bool opfx();
void osfx();
basic_ostream& operator<<(basic_ostream& (*pf)(basic_ostream&));
basic_ostream& operator<<(basic_ios<E, T>& (*pf)(basic_ios<E, T>&));
basic_ostream& operator<<(ios_base<E, T>& (*pf)(ios_base<E, T>&));
basic_ostream& operator<<(basic_streambuf<E, T> *sb);
basic_ostream& operator<<(const char *s);
basic_ostream& operator<<(char c);
basic_ostream& operator<<(bool n);
basic_ostream& operator<<(short n);
basic_ostream& operator<<(unsigned short n);
basic_ostream& operator<<(int n);
basic_ostream& operator<<(unsigned int n);
basic_ostream& operator<<(long n);
basic_ostream& operator<<(unsigned long n);
basic_ostream& operator<<(float n);
basic_ostream& operator<<(double n);
basic_ostream& operator<<(long double n);
basic_ostream& operator<<(void * n);
basic_ostream& put(E c);
basic_ostream& write(E *s, streamsize n);
basic_ostream& flush();
pos_type tellp();
basic_ostream& seekp(pos_type pos);
basic_ostream& seekp(off_type off, ios_base::seek_dir way);
};
这个是标准模板basic_ostream ,cout是继承这个模板的.也继承了它对<<的操作
piaochen_2002
2005-12-30
打赏
举报
回复
cout<<&p这个&p是系统给p分配的地址,所以是不变的,如同这样: int i=1;i=2;&i的值也不会改变.
cout<<p之所有会输出p指向的内容是因为cout对操作符<<的重载吧.
StarLee
2005-12-30
打赏
举报
回复
我把const去掉,两次输出的地址还是一样,为什么?
还有就是p是一个指针,为什么输出p的时候输出的是p指向的内容呢?
jianwang_yz
2005-12-30
打赏
举报
回复
const char *p = "Test";
cout << &p << endl; // 输出 p的地址;因为&就是取地址啊
cout << p << endl; // 输出 p指向的字符串常量 Test;这个显然的啦,p是字符串指针嘛
cout << *p << endl; // 输出 p指向的字符串常量的第一个字符:T。因为p是指针,它指向字符串,但在p的内存单元里实际存放的就是第一个字符的地址(跟数组名类似),所以*p就是该地址所指向的值,即T
p = "Other";
cout << &p << endl; //输出 p的地址;而且与上面的内存地址一样,因为p是指针常量(有const定义)
cout << p << endl; //输出 p指向的字符串常量 Other,同上
cout << *p << endl; //输出 p指向的字符串常量的第一个字符:O。同上
piaochen_2002
2005-12-30
打赏
举报
回复
&p是p的地址,
p里面放的值是字符串常量的首地址!
herman~~
2005-12-30
打赏
举报
回复
const char *p = "Test";
是静态变量,我的理解是:对象只初始化一次,所以第二次赋值的机器地址没有更换
piaochen_2002
2005-12-30
打赏
举报
回复
const char *p = "Test";
cout << &p << endl; // 输出 p的地址 我的机器上是0012ff7c
cout << p << endl; // 输出 p指向的字符串常量 test
cout << *p << endl; // 输出 p指向的字符串常量的第一个字符。 t
p = "Other";
cout << &p << endl; //输出 p的地址 我的机器上是0012ff7c
cout << p << endl; //输出 p指向的字符串常量 Other
cout << *p << endl; //输出 p指向的字符串常量的第一个字符。 O
xupy520
2005-12-30
打赏
举报
回复
<<对于char * 和 int * 的重载是不一样的吧
piaochen_2002
2005-12-30
打赏
举报
回复
一样的问题,继承了,basic_ostream 关于<<的方法
学vc/
c++
之前应三思
转自一个论坛大家的讨论:1.打好坚实的
基础
十分重要的,但这并不一定表明一定要学习VC才算打好
基础
,我认为,如果你的天分不是太高(自己心里一定要清楚),自己对金钱的热爱高于对程序的热爱,那么我认为你还是选择一种快速开发工具(这儿不包括bcb),把
C++
/VC作为一种业余爱好比较好一点的。 用
C++
做开发,对人的素质要求很高,但开发效率却无法大幅度提高。 中国是学
C++
最厉害的国度,却是使用
如何成为一名编程
高手
——《代码揭秘》告诉你!
如何成为一名编程
高手
!本文选自《代码揭秘——从C/
C++
的角度探秘计算机系统》一书前言。 算下来这本书应该是我奉献给读者的第三本书了。一路写下来,自己也感觉非常庆幸,庆幸有许多读者如此地厚爱于我!更高兴地看到广大读者能够从我的书里汲取知识,获得启迪。在计算机图书的创作过程中,我不禁感慨:写一本好书不容易!更何况千里马常有,而伯乐不常有,能够让一本书找到它真正的读者同样有难度。因此我
程序猿的两难抉择
//不想看我废话的
请
直接看后面的红色字体,希望
高手
能依据我的实际情况为我
指点迷津
。 我是那种后知后觉、算是上进的人,由于缺乏规划和运行力,没有把自己的路走好。现在,我一直在反思。 2011年自己主动化毕业,进了深圳一家民营电子企业。应聘的是硬件project师,到公司之后,公司却让做软件(嵌入式,C语言),那时没有太多的想法,反正在学校学过C语言,就将就着做吧!初生牛犊不...
菜鸟版exploit编写指南[转]
从早期的idq/ida到webdavx,一直以来都是用大虾们写的溢出利用程序来玩,在看过了很多溢出入门的文章后,我忍不住也试着学习了一下。这些文 字也算是一些心得体会,拿出来献丑的原因,一是和同样身为菜鸟的朋友们交流一下,二来还留下了一些
问题
,希望
高手
们能够在看到后抽出百忙的时间,指点一下 迷津。 一般的溢出入门文章,都是自己写一个有弱点的程序然后来hack,感觉上总是有点不过瘾,所以我...
(转载,急待众喷)Java替代C语言的可能性
下文转载字 另一个论坛。 本人菜鸟,对Java,C,
c++
的发展毫无看点。望众网友
指点迷津
。 ====================================================================== 前不久看到一篇《C语言已经死了,5个需要忘却它的理由(点击查看原文)》的文章,引起了一些争论。其实那篇文章是从Ed Burnette的博客上转载来
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章