如何传递一个临时变量的地址给指针函数

R9R9R9 2005-07-28 02:46:34
int i=10;

int foo()
{
return i;
}

void fun(const int &p)//如何改成指针形式..书中说无法将临时变量的地址传递给指针的函数
//但是既然引用可以.为什么指针就不可以.引用不是也是传地址的吗?
{
cout<<p<<endl;
}
int main()
{
fun(foo());
system("pause");
}
...全文
325 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
OpenHero 2005-07-29
  • 打赏
  • 举报
回复
学习
sankt 2005-07-29
  • 打赏
  • 举报
回复
学习
R9R9R9 2005-07-29
  • 打赏
  • 举报
回复
UP
R9R9R9 2005-07-28
  • 打赏
  • 举报
回复
TO: copygirl(wa!) ( )
你返回的并非是一个临时对象的地址.而是全局变量的地址..

TO:zhaozhencn(FlyingDonkey)
临时对象可以绑定于一个const 对象的引用(而非const引用则不行). 通过这种绑定,会自动延长临时对象的生存周期.
那为何不可以通过const指引来延长临时对象的生存周期呢?
如:void fun(const int *p)
beyondtkl 2005-07-28
  • 打赏
  • 举报
回复
临时对象不能为左值

同意樓上的樓上.
conglingkaishi 2005-07-28
  • 打赏
  • 举报
回复
跟楼上的学习了。
allen_zhaozhencn 2005-07-28
  • 打赏
  • 举报
回复
临时对象可以绑定于一个const 对象的引用(而非const引用则不行). 通过这种绑定,会自动延长临时对象的生存周期. 临时对象本身是非const的.

由于临时对象本身的生命周期的原因. 使得指针可能指向一个已经析构的对象的地址.而造成不确定的错误. (临时对象不能为左值)
copygirl 2005-07-28
  • 打赏
  • 举报
回复
如果想在fun函数中使用指针,那么foo函数返回的也应该是个指针。

int i=10;

int * foo()
{
return &i;
}

void fun(const int *p)
{
cout<<*p<<endl;
}
void main()
{
fun(foo());
}
xjp6688 2005-07-28
  • 打赏
  • 举报
回复
可以呀
WingForce 2005-07-28
  • 打赏
  • 举报
回复
虾米是临时变量啊
请指点一下

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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