ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言函数功能的强大和入坑体会

2021-03-28 17:51:10  阅读:170  来源: 互联网

标签:体会 函数 形参 实现 C语言 pb int 指针


       在以前的学习过程中都是直接在主函数中实现诸多功能的表达,会导致主函数主体看上去冗余复杂不好理解,对于初学者来说一般实现的功能不会太多,所以不会体会到函数的优越性,如果一个项目要实现复杂的功能,设计者把所有的实现过程全写在主函数内,由于代码量的大幅增加会导致代码运行的效率降低,对于后期的代码修改优化也会增加一定的难度。所以渐渐学会使用函数来实现及具体的功能对我们以后的学习会更有帮助。

举个例子,比如我们要写一个输出从1900到2021年之间是闰年的年份的简单代码,首先在主函数中使用循环实现1900到2021的输出,在主函数外设计一个闰年判断函数,在主函数中调用它,就能实现闰年的显示输出,这样使用的优点在于如果你想判断其他年份只需要再调用该函数即可,就不用每次去重写代码降低效率。

说了函数有多么多么优秀好用,那现在也简单来说说我在函数设计调用中众多坑,经常就是一不小心就写出了bug,时常还找不出哪里出错了。下面也用一些实际练习是入过的坑来聊一聊,我第一次被坑就是用函数写两个数据之间的交换,不使用函数的话是很好实现的,就是多引用一个空变量来实现两个数据的交换,用函数实现大体思路基本一样,把主函数中的实参数据传递给函数中的形参接收,从而在函数中实现数据的替换,但实践告诉我们直接把实参传递给形参不能实现该功能。后来经过调试发现形参实例化后相当于实参的一份临时拷贝,形参具有独立的内存空间,所以不能进行交换。如果要实现就需要在函数中就要使用指针来接收变量的地址,利用指针的解引用操作指向地址里的值从而进行交换,因为是指针接收就不会形成独立的空间,利用指针就能进行数据访问来实现功能。另外还有就是数组传参仅仅传的是数组首元素地址,而不是整个数组元素,本质上函数中的数组就是一个指针指向元素首地址,因此在函数中不能求数组元素个数,该过程只能在函数体之外。

以下有参考代码:

#include<stdio.h>


void swap(int* pa, int* pb)//使用指针创建一个数据替换函数,pa接收a的地址,pb接收b的地址


{

int tmp = 0;//定义一个零变量

tmp = *pa;//解引用指针数据值,实现数据交换

*pa = *pb;

*pb = tmp;

}

int main()

{

int a = 19;

int b = 90;

printf("%d %d\n", a, b);

swap(&a, &b);//调用数据交换函数实现交换

printf("%d %d\n", a, b);

return 0;

}


标签:体会,函数,形参,实现,C语言,pb,int,指针
来源: https://blog.51cto.com/15101214/2675429

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有