请高手确认!谢谢了.这个循环中,有没有可能/什么时候输出不同的值?

alula 2003-06-30 08:40:41
#include <iostream>
using namespace std;

void prt(int*& r) {
cout << (void*)&r << endl;
}

int main() {
for (int i = 0; i < 10; ++i) {
int* p = new int(i*i);
prt((int*&)p);
}
}
...全文
49 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bm1408 2003-07-05
  • 打赏
  • 举报
回复
no reason!
web_spider 2003-07-05
  • 打赏
  • 举报
回复
在release和debug版下输出的内容是不同的,这是由编译和链接程序决定的。
但都是p的地址
web_spider 2003-07-05
  • 打赏
  • 举报
回复
memory leak
101101 2003-07-05
  • 打赏
  • 举报
回复
我是新 来的,上面的我看不太明白啊,希望以后多多学习!
alula 2003-07-05
  • 打赏
  • 举报
回复
to plainsong(伤心的风★短歌)

"如果编译器做了“循环展开”的优化,就会输出不同的值。",
什么时候编译器会这么做呢?

谢谢!
alula 2003-07-05
  • 打赏
  • 举报
回复
plainsong(伤心的风★短歌) 说的对,我正要调试某段代码.

liuhaibao 2003-07-01
  • 打赏
  • 举报
回复
请问这个是做什么用的?有什么意义?目前看不出什么明堂
Prada 2003-06-30
  • 打赏
  • 举报
回复
这有意义吗?
fastzch 2003-06-30
  • 打赏
  • 举报
回复
up
xueqt 2003-06-30
  • 打赏
  • 举报
回复
楼上几位有道理
yeyuboy 2003-06-30
  • 打赏
  • 举报
回复
它输出的是r的地址,你如果有办法改变r的地址,那么就可以?
短歌如风 2003-06-30
  • 打赏
  • 举报
回复
很难说。如果编译器做了“循环展开”的优化,就会输出不同的值。
  事实上,输出一个变量(尤其是临时变量)的地址是没有意义的——除非是在调试程序。
Kaye 2003-06-30
  • 打赏
  • 举报
回复
基本上没有!
cout << (void*)&r << endl;
改成
cout << (void*)r << endl;
就有可能了
MaiCle 2003-06-30
  • 打赏
  • 举报
回复
这题有什么实际意义吗?不懂,汗。。。。
lbaby 2003-06-30
  • 打赏
  • 举报
回复
sorry 错了,是地址的地址
间谍 2003-06-30
  • 打赏
  • 举报
回复
不会的
lbaby 2003-06-30
  • 打赏
  • 举报
回复
有,但是要改一下:
#include <iostream>
using namespace std;

void prt(int*& r) {
cout << (void *)( r) << endl;//(void *)( &r)便成了r的地址了
}

int main() {
for (int i = 0; i < 100; ++i)
{
int* p = new int(i*i);
prt((int*&)p);
}
return 0;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧