iamexe
2015-12-02 16:11c/c++ 函数调用中形参为指针或者引用对栈操作问题
问题引出:
当我们的函数参数为普通变量或指针时,我们在调用过程中会拷贝一个副本,而当形参为引用时不会拷贝一个副本。
当形参为普通变量时,会拷贝一个变量备份,当为指针时会拷贝一个指针备份,指针指向的内容不会拷贝
问题来了:
查看使用指针和使用引用的方式调用的函数的汇编代码,会发现在汇编代码层面实现方式是一模一样的,都是:
lea eax,[i](假设i是整形变量)
push eax
而使用值传递方式是:
mov eax,dword ptr [i] (假设i是整形变量)
push eax
-----但是为什么使用指针传递需要拷贝一个指针的备份(4个字节),而使用引用不会产生拷贝。。
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- 如何在函数里面知道形参传入数组的元素个数?
- c语言
- c++
- 1个回答
- 为什么指针函数可以不带形参名?
- c语言
- c++
- 1个回答
- 链表操作中即使函数传入的是链表指针,若根节点没有改变,链表也会改变?
- c++
- 1个回答
- C#调用C++函数,参数为指针该怎么处理?
- c++
- 1个回答
- 把一个带形参的函数封装到另一个函数中
- c语言
- c++
- 1个回答
换一换