摘要:在写代码创作一个较大的模块时通常需要将大模块分解为几个小模块来共同完成函数即可笼统的理解为小模块合理的构架运用小模块有利于让别人读懂我们的代码我们之前了解到一个程序必须要有一个函数即主函数构成在主函数中还使用系统提供的标准函数如本文章的函
在写代码创作一个较大的模块时,通常需要将大模块分解为几个小模块来共同完成,"函数"即可笼统的理解为"小模块",合理的构架,运用"小模块"有利于让别人读懂我们的代码.
我们之前了解到一个程序必须要有一个函数(即main主函数)构成,在主函数中还使用c系统提供的标准函数(如printf,scanf),本文章的函数并非这些系统函数,而是一些我们自己创作出来的函数.
我们首先看一段"交换数值的代码":
//两个数值交换#include //"#"预处理指令 void swap(int a,int b){ printf("交换前a为%d,b为%d/n",a,b); int i;//i为数据的传递桥梁 i=a;//a的值赋给了i a=b;//b的值赋给了a b=i;//i的值赋给了b printf("交换后a为%d,b为%d",a,b); }int main(){ int a,b; a=1,b=2; swap(a,b); return 0;}
运行结果为:
下面依次解读此代码的运行原理与过程:
1原理:代码一下几行:
void swap(int a,int b){ printf("交换前a为%d,b为%d/n",a,b); int i;//i为数据的传递桥梁 i=a;//a的值赋给了i a=b;//b的值赋给了a b=i;//i的值赋给了b printf("交换后a为%d,b为%d",a,b); }
为函数定义部分,一般格式如下:
数据类型或者void 函数名(形参1,形参2,~~)
{
函数体
}
先看 void swap(int a,int b):
细节1:数据类型 or void? 就看这个"小模块"有无返回值(retuen),有就是数据类型中的一个,无就是 void.
细节2:若写数据类型,则其为返回值的数据类型,即返回值为1,那就是int,为1.0,那就是float,为字节a,那就是char.
细节3:函数名(本小模块为swap汉语为交换的意思),这个东西可以随便写(除了c系统自带的!!!),尽量写英文单词.
细节4:(形参1,形参2),形参可以没有但这对括号必须要有,形参就是接受实参传递过来的数据,然后带入"小模块"去"加工",所以,形参与实参必须一一对应.例如,本代码中main函数部分的swap(a,b)中的a传给了"小模块"中的"int a",main函数中的swap(a,b)中的a,b为实参,一定注意形参与实参在顺序上的一一对应,并且形参的改变不影响实参的值,比如我在本程序加了一句打印实参a,b:
//两个数值交换#include //"#"预处理指令 void swap(int a,int b){ printf("交换前a为%d,b为%d/n",a,b); int i;//i为数据的传递桥梁 i=a;//a的值赋给了i a=b;//b的值赋给了a b=i;//i的值赋给了b printf("交换后a为%d,b为%d/n",a,b); }int main(){ int a,b; a=1,b=2; swap(a,b); printf("实参a为%d,实参b为%d/n",a,b); return 0;}
运行后:
那么我们该如何改变实参?这就是下一节内容 指针与函数.
细节5:函数体的内容.此内容为小模块的核心,也是体验每个人思路的一部分.我们先只看一下其中的返回值部分.return语句会结束一切函数包括"小模块"的运行,同时return(表达式)还可以向主函数返回"表达式",表达式为变量或者常量,例如:
#includefloat avg(int a,int b,int c){ float avg=(a+b+c)/3; return avg;}int main(){ int a,b,c; float average; scanf("%d %d %d",&a,&b,&c); average=avg(a,b,c); printf("平均值为%.1f",average); }
其中"小模块"的return avg 的avg在小模块运行完后赋给了main函数的average,结果如下:
细节6:main使用自己的"小模块"时,如果"小模块"在主函数后面,必须先在前面声明,就是这样:
//两个数值交换#include //"#"预处理指令 void swap(int a,int b);//声明函数,(定义加;) int main(){ int a,b; a=1,b=2; swap(a,b); printf("实参a为%d,实参b为%d/n",a,b); return 0;}void swap(int a,int b){ printf("交换前a为%d,b为%d/n",a,b); int i;//i为数据的传递桥梁 i=a;//a的值赋给了i a=b;//b的值赋给了a b=i;//i的值赋给了b printf("交换后a为%d,b为%d/n",a,b); }
即"小模块"必须先声明,在调用.
/
以上内容为21级大一新生对于函数的了解,可能哪里有些不妥,请多指教.代码均为c,都可直接运行
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/125650.html
摘要:友情提示先关注收藏,再查看,万字保姆级语言从入门到精通教程。及大牛出天地开始有随之乃有万种语年英国剑桥大学推出了语言。 友情提示:先关注收藏,再查看,13 万字保...
目录 一、什么是C语言? 二、第一个C语言程序 代码 程序分析 程序运行 一个工程中出现两个及以上的main函数 代码 运行结果 分析 三、数据类型 数据各种类型 为什么会有这么多的数据类型? 计算机单位 各个数据类型的大小 注意事项 数据类型的使用 四、变量和常量 变量的分类 变量的使用 变量的作用域和生命周期 常量 五、字符串+转义字符+注释 字符串 转义字符 注释 六、选择语句 ...
摘要:我们来介绍语言和中的区别和联系。语言没有函数重载,支持函数重载。语言中产生函数符号的规则是根据名称产生,这也就注定了语言不存在函数重载的概念。简单来说,它和普通变量的区别只是不能做左值而已。需要注意的是,的指针有可能退化成语言的指针。 C语言虽说经常和C++在一起被大家提起,但可千万不要以为...
摘要:大家好,今天屁孩君给大家带来入门综合。年,标准委员会发布了语言的第一个国际标准,该标准即为大名鼎鼎的。年,标准委员会发布了一份技术报告,详细说明了计划引入的新特性。年月日,经过标准委员投票,标准获得一致通过。 ...
摘要:局部变量的作用域是变量所在的局部范围。局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束。 目录 1、什么是c语言? 2、数据类型 3、变量、常量 3.1 定义变量的方法 3.2 变量的分类 3.3 变量的作用域和生命周期 3.4定义常量的方法 4、关键字 1、什么是c语言?...
阅读 3735·2023-01-11 11:02
阅读 4244·2023-01-11 11:02
阅读 3050·2023-01-11 11:02
阅读 5180·2023-01-11 11:02
阅读 4737·2023-01-11 11:02
阅读 5534·2023-01-11 11:02
阅读 5313·2023-01-11 11:02
阅读 3986·2023-01-11 11:02