C/C++中的实参和形参

  今天突然看到一道关于形参和实参的题,我居然不求甚解。藐视过去在我的脑海里只有一个参数的概念,对于形参和实参的区别还真的不知道,作为学习了几年C++的人来说,真的深深感觉对不起自己对不起C++老师  T。T

我觉得只要明白了值传递和地址传递,就应该能明白形参和实参的具体工作细节了。

1、值传递

    实参是变量,表达式等值。

    find(int x){}

    y= find(z);

   上面的例子中,z是实参,x是形参。x变z不变。

   在值传递过程中,实参和形参位于内存中两个不同地址中,实参先自己复制一次拷贝,再把拷贝复制给形参。所以,在值传递过程中,形参的变化不会对实参有任何的影响。

2、地址传递(也称引用传递)

   实参是指针。

   在函数调用的时候,实参传递给你的是指针地址,地址一样也就意味着实参和形参是一样的,当你的形参发生改变时,实参也会发生改变。

    find(int  &x){}

    y= find(z);

    上面的例子中,z是实参,x是形参。z随x而改变。

3、const引用传递

    find(const int  &x){}

    y= find(z);

    上面的例子中,z是实参,x是形参。z不随x而改变。

    有人就会问了,你这样做不是和值传递一样的么?NO!

    仔细观察就会发现,在值传递中要进行两次拷贝,浪费内存资源是相当可耻的,const的出现有效避免了这种情况的出现,只需拷贝一次就够了。

posted @   Mr. Ant  阅读(36672)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2013-08-14 【HDU1914 The Stable Marriage Problem】稳定婚姻问题
2013-08-14 【HDU4585 Shaolin】map的经典运用
2013-08-14 【HDU4578 Transformation】线段树
2013-08-14 【HDU4632 Palindrome subsequence】区间dp
2013-08-14 SRM 588 DIV1
点击右上角即可分享
微信分享提示