社区
C++ 语言
帖子详情
如何传递一个临时变量的地址给指针函数
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");
}
...全文
299
10
打赏
收藏
如何传递一个临时变量的地址给指针函数
int i=10; int foo() { return i; } void fun(const int &p)//如何改成指针形式..书中说无法将临时变量的地址传递给指针的函数 //但是既然引用可以.为什么指针就不可以.引用不是也是传地址的吗? { cout<<p<<endl; } int main() { fun(foo()); system("pause"); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
虾米是临时变量啊
请指点一下
深入探究
指针
变量
的值
传递
问题
以前总结过
函数
参数的两种值
传递
方式——值
传递
和引用
传递
,参见这篇博客【
函数
参数
传递
的两种方式——值
传递
和引用
传递
】 并且我们知道:
指针
传递
的本质也是值
传递
! 什么意思呢? 普通的值
传递
是
函数
传入
一个
变量
a,那么
函数
就只能记得a的值并使用之,在
函数
的栈中会有
一个
临时
的
变量
区域存储a的值,当
函数
调用结束的时候该
变量
区域也别销毁了,所以值
传递
就是:
函数
只能使用传入的
变量
值,而试图修改该
变量
的操作都...
C++参数
传递
(引用,
临时
变量
)
一般的
变量
声明时就创建相应的内存空间,该空间用于存储该
变量
的值。
函数
进行按值
传递
时,是将该
变量
值的拷贝传给
函数
,因此在
函数
中将传进来的值改变也不能改变
变量
的值。
指针
变量
和按
指针
传递
。
指针
类型的
变量
在声明后,根据操作系统的不同创建相应大小的内存空间,该空间上存储的是
一个
地址
,该
地址
指向
一个
变量
。如果
函数
按
指针
进行
传递
参数,也是将
变量
的拷贝传进来,但该
变量
是
一个
指向某内存单元的地...
C++
函数
返回字符串
指针
的
临时
变量
情景 假设有
函数
getname(),且其返回值为
一个
字符串
指针
。在
函数
体内部,定义字符串数组char temp[10]来接受外界输入。因为temp为自动
变量
,getname()一旦结束后其就会消亡。但是如果该
函数
最后返回temp数组的首
地址
作为返回值,会发生什么呢? 注1:如果直接使用char* temp而不是char temp[10],则需要首先对temp初始化,但是这样temp直接变成const char*,后期无法对其进行赋值。 对于一般的整型、实型
临时
变量
,即使其生命期结束,也能够正常地将值返回给外
临时
变量
的一些细节
一 :
临时
变量
产生之值
传递
::(值
传递
包括
指针
传递
)1 。非引用的参数
传递
:实参有自己的
变量
空间,当开始调用
函数
时, 形参并不会自己申请内存单元,在
传递
(内置类型)实参时,先将实参的值放到寄存器中,再执行push eax指令,对参数进行压栈在执行”main
函数
语句中的Add(a,b)
函数
时”先进行以下的步骤: :mov eax,dword ptr[ebp - 8]
C语言中使用
函数
进行
指针
变量
地址
传递
,即二级
指针
C语言中使用
函数
对
指针
的
地址
进行
传递
C++ 语言
64,530
社区成员
250,670
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章