C语言学习笔记 (003) - C/C++中的实参和形参(转)
2023-09-27 14:22:03 时间
今天突然看到一道关于形参和实参的题,我居然不求甚解。藐视过去在我的脑海里只有一个参数的概念,对于形参和实参的区别还真的不知道,作为学习了几年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的出现有效避免了这种情况的出现,只需拷贝一次就够了。
相关文章
- C/C++数据结构(七) —— Tree的前世今生
- C++类和对象的基本概念
- 【C/C++开发】C语言实现函数可变参数
- 【C/C++开发】C语言 DLL(动态链接库)中申请动态内存释放的问题
- 【C/C++开发】C语言 DLL(动态链接库)中申请动态内存释放的问题
- 【VS开发】C++ opencv Mat基础
- C语言学习笔记 (002) - C++中引用和指针的区别(转载)
- CSDN开发者周刊第19 期:GitHub 2020 年度报告 TypeScript 超越 C#、PHP 和 C++;Kubernetes 弃用 Docker!
- C/C++ 常用工具集
- Visual C++2013从入门到精通
- VS 2015支持C语言和C++程序
- [C++]多源最短路径(带权有向图):【Floyd算法(动态规划法)】 VS n*Dijkstra算法(贪心算法)
- 【C++/C语言打印五角星----附源代码】
- C++学习笔记_10 异常处理 2021-04-27
- C++ 找标定圆点
- C++拷贝构造函数详解
- [C++] inline内联函数使用方法
- 【C语言和C++】实现线程池
- 【C/C++】C语言复习笔记-17种小算法-解决实际问题
- C/C++入门004-C语言流程控制
- Linux C/C++ Memory Leak Detection Tool
- 设计模式C++学习笔记之五(Factory Method工厂方法模式)
- ODB(C++ ORM)用Mingw的完整编译过程
- C语言的结构体和 C++结构体的区别
- C++中对C语言结构体用法的扩充