当前位置:网站首页>函数(基本:参数,返回值)
函数(基本:参数,返回值)
2022-07-05 04:16:00 【曹乐乐爱学习】
函数参数传递:
A-函数的值传递:
void fun(int a,int b);//函数声明(函数原型)
就是实参赋值给形参,在函数处理中,实参本身是不受影响的。例:
实现两个数据交换:
void swap(int ,int );
void swap(int num1,int num2)
{
int n1,n2,t;t =n1;
n1 = n2;
n2 = t;
}
原因:实参a,b传递给形参n1,n2的只是数值,而,a与n1根本就不是同一个地址空间,所以无论n1,n2如何操作,根本对a,b产生不了任何影响。
如果要解决这个问题,2种方式:
1、使用全局变量—— 不建议,因为函数尽量要模块化,尽量减少数据之间互相影响。(所谓的:高内聚,低耦合?)
2、地址传递(指针传递)——建议
只说2、地址传递:
B-函数地址传递:
这样以来,直接把a,b的地址传递进来,进行操作;实质上就是对a,b本身进行操作(说的好像是屁话)。
附加:(为了安全起见,有些时候,我们传地址,也并不是为了修改原始数据,那么可以使用const 修饰一下,只读)
比如求字符串长度:
函数的返回值
如上图,函数内求了字符串长度之后,我还需要把求得的值,传递到主函数去使用。两种方法:
1、使用全局变量——不建议
2、使用函数返回值
函数的返回值
但是要注意:
我只是加了一句,打印返回的n的值,就报错?
这是因为:函数中如果使用auto存储类型(默认不写),生命周期只存在于函数被调用期间(局部变量是放到栈上的),在函数执行完毕之后,就会释放,不能再被访问了,如果进行读写,就是非法。
而return n 之后,把函数直接赋值给变量却没问题,是因为:return的值,就是函数本身的返回值。
如果想打印出n的值,还是上面1所描述的方法:将n设置为全局变量——不建议。
边栏推荐
- Threejs realizes the drawing of the earth, geographical location annotation, longitude and latitude conversion of world coordinates threejs coordinates
- Ctfshow web entry code audit
- 如何实现实时音视频聊天功能
- 3. Package the bottom navigation tabbar
- About the project error reporting solution of mpaas Pb access mode adapting to 64 bit CPU architecture
- kubernetes集群之调度系统
- Rome chain analysis
- EasyCVR更改录像存储路径,不生成录像文件如何解决?
- Study notes 7
- SPI read / write flash principle + complete code
猜你喜欢
mxnet导入报各种libcudart*.so、 libcuda*.so找不到
Realize the attention function of the article in the applet
Looking back on 2021, looking forward to 2022 | a year between CSDN and me
Special Edition: spreadjs v15.1 vs spreadjs v15.0
kubernetes集群之调度系统
Alibaba cloud ECS uses cloudfs4oss to mount OSS
MacBook安装postgreSQL+postgis
Containerd series - detailed explanation of plugins
Threejs Internet of things, 3D visualization of farms (I)
Threejs realizes the drawing of the earth, geographical location annotation, longitude and latitude conversion of world coordinates threejs coordinates
随机推荐
What is test development? Why do so many companies hire test developers now?
Summary of scene design
Get to know MySQL connection query for the first time
SPI read / write flash principle + complete code
Wechat applet development process (with mind map)
小程序中实现文章的关注功能
EasyCVR更改录像存储路径,不生成录像文件如何解决?
Hexadecimal to octal
Differences among 10 addressing modes
Threejs clicks the scene object to obtain object information, and threejs uses raycaster to pick up object information
Rome链分析
陇原战“疫“2021网络安全大赛 Web EasyJaba
Scheduling system of kubernetes cluster
Special Edition: spreadjs v15.1 vs spreadjs v15.0
Laravel8 export excel file
Online text line fixed length fill tool
Uni app common functions /api
25K 入职腾讯的那天,我特么哭了
The new project Galaxy token just announced by coinlist is gal
Rust区块琏开发——签名加密与私钥公钥