学习笔记---自定义函数基础
来源:互联网 发布:esp8266与51单片机链接 编辑:程序博客网 时间:2024/04/25 05:25
自定义函数
简述:
C语言程序中,软件模块用函数实现
用于实现模块化程序设计:
1.将一个大的程序划分成若干程序模块,每个模块实现一定的功能么,以方便分工,或降低开发难度。
2.程序进行调试时,分别对每一模块进行调试,在较小的范围内查错并改正。
核心思想:
自顶向下,逐步求精。
优势:
降低程序的复杂度,使程序设计、维护、阅读、调试等操作简单化
函数三要素:
函数名、函数返回值、函数参数。
如:float f1(float x);
其中f1是函数名,f1前的float是函数返回值类型,float x是函数参数。
示例代码1:
#include <stdio.h>#include <stdlib.h>#include <math.h>/*求f1(x)=3*x^3+2*x^2-1*/float f1(float x){ float y; y=3*x*x*x+2*x*x-1; return y;}int main(){ float x,y; scanf("%f",&x); y=f1(x);//这个公式十分亲切 printf("x=%.3f,y=%.3f\n",x,y); return 0;}结果:
如上代码将通过x求y的过程封装入f1()这个函数,在需要使用这段代码时,只需要使用y=f(x);这种中学数学中使用了无数次的表示形式即可。
分类:
自定义函数类别:
按函数返回值分类:
无返回值函数:
返回值为void类型,只完成某些操作。
有返回值函数:
返回值为函数定义(声明)时的数据类型
执行完毕返回return后的值。
return语句:
意义:
用于函数的返回,
形式:
return (表达式);
return 表达式;
return;
注:当有多个return语句时,执行到哪个,哪个起作用(直接返回)。
函数的返回:
包括:
1.执行流程的返回:由被调用函数返回到主调函数。
2.执行结果的返回:将被调用函数执行得到的结果带回主调函数。
要点:
1.无返回值的函数return语句可以省略,而有返回值的函数必须写return语句。
2.旧的C语言标准中允许main函数无返回值(void),但最新的标准规定main函数必须要有一个整型的返回值(int)并且在正常结束时,返回一个0(return 0; 这里返回不同的值代表不同的状态,但这里不深入研究)
这是因为Linux之类的系统中要求程序必须给操作系统返回值,以方面识别程序的运行状态。为了提高代码的兼容性,最新的标准做出了这样的规定。
3.当返回的类型和定义的返回类型不匹配时,如:
long f1(float x){ float y; y=3*x; return y;}系统会自动对返回值进行数据类型的转换,转换的规则和赋值时自动数据类型转换的规则相同。
进阶使用与要点
代码示例1:
#include <stdio.h>#include <stdlib.h>/*这个程序用于输出指定符号组成的三角图形*/void printchs(int,char);//这里在定义之前声明了这个函数的返回值类型、名字、参数类型和个数int main(){ int i,n; char ch1,ch2; printf("请输入金字塔层数:"); scanf("%d",&n); getchar(); printf("请输入金字塔的组成字符:"); ch1=getchar(); getchar(); printf("请输入空白处的填充字符:"); ch2=getchar(); getchar(); for(i=0;i<n;i++) { printchs((n-i-1),ch2); printchs((2*i+1),ch1); printf("\n"); } return 0;}void printchs(int m,char ch){ int j; for(j=0;j<m;j++) { printf("%c",ch); }}
结果:
解析:
注意!这里如果要用固定的字符,不能使用printchs((n-i-1),">");之类的!因为ch2的位置要求一个字符型的参数,而用双引号的话,就变成了字符串型的参数了!
代码示例2:
#include <stdio.h>#include <stdlib.h>/*这个程序用来测试自定义函数的使用*///先声明函数的返回值,名称,形式参数,使得后面的方法能够直接调用这些函数。这可以说是java中接口的雏形void printstars(void);//括号内的形式参数使用void表示无传入参数void printmessage();//void类型表示无返回值int max(int a,int b);//声明带参数的函数int min(int,int);//声明的时候,形式参数的名字可以不写int sum(int c,int d);//声明的时候的形式参数名可以和定义时的形式参数名不同,只要数据类型相同即可int main(){ printstars();//因为上方已经声明过这个函数的使用方式(名称、参数、返回值) printmessage();//所以这里直接调用并不会出错 printstars();//即使函数还未定义 int a=5,b=8; printf("max:%d\n",max(a,b)); printf("min:%d\n",min(a,b)); printf("sum:%d\n",sum(a,b)); return 0;}//这里才定义函数内部的方法,因为前面已经声明过这个函数,所以即使把定义放在这里,程序也不会出错void printstars(){ printf("********************\n");}void printmessage(){ printf("Hello , World!\n");}int max(int a,int b){ return a>b?a:b;}int min(int a,int b)//这个函数声明时并没有给形式参数命名{ return a<b?a:b;}int sum(int a,int b)//这个函数定义时的形式参数命名和声明时的形式参数命名不同{ return a+b;}结果:
解析:
1.自定义函数在main函数外部声明,可以参考全局变量的声明。都是通过这种方式使得其有效性覆盖整个程序执行过程。
按函数返回值分类:
无返回值函数:
返回值为void类型,只完成某些操作。
有返回值函数:
返回值为函数定义(声明)时的数据类型
执行完毕返回return后的值。
return语句:
return (表达式);
return 表达式;
return;
当有多个return语句时,执行到哪个,哪个起作用(直接返回)。
函数的返回:
执行流程的返回:由被调用函数返回到主调函数。
执行结果的返回:将被调用函数执行得到的结果带回主调函数。
注:无返回值的函数return语句可以省略,而有返回值的函数必须写return语句。
注:旧的C语言标准中允许main函数无返回值(void),但最新的标准规定main函数必须要有一个整型的返回值(int) 并且在正常结束时,返回一个0(return 0; 这里返回不同的值代表不同的状态,但这里不深入研究)
这是因为Linux之类的系统中要求程序必须给操作系统返回值,以方面识别程序的运行状态。为了提高代码的兼容性,最新的标准做出了这样的规定。
注:当返回的类型和定义的返回类型不匹配时,如:
long f1(float x){ float y; y=3*x; return y;}系统会自动对y进行数据类型的转换,转换的规则和赋值时自动数据类型转换的规则相同。
- 学习笔记---自定义函数基础
- T-SQL学习笔记-程序设计基础-自定义函数
- python学习笔记:自定义函数
- MySQL学习笔记-自定义函数
- C++基础学习笔记:函数
- php学习基础篇之自定义函数
- oracle学习笔记之自定义函数
- MySQL学习笔记(十四)自定义函数
- [进阶]MySQL学习笔记十自定义函数
- MySQL学习笔记—自定义函数
- MySQL学习笔记7:MySQL自定义函数
- 学习笔记---自定义函数提高---1
- 学习笔记---自定义函数提高---2
- Python学习笔记(11)-Python自定义函数
- javascript学习笔记 (一)-函数基础
- Python基础函数学习笔记(一)
- Python基础函数学习笔记(二)
- Python基础函数学习笔记(三)
- Java 获取前一天的24小时
- [机器学习 - 周志华] - 第二章 - 模型评估与选择
- 通过 Hibernate 实现 JPA 对象关系模型之继承映射策略
- 页面字体自适应
- 信号的生命周期
- 学习笔记---自定义函数基础
- 使用Castle做类的增强
- tasklet_hrtimer_init
- Android资源汇总
- codefroces 746D Green and Black Tea
- Android中级篇之Fresco-加载图片基础[详细图解Fresco的使用]
- unordered_map笔记
- 金融时间序列分析:2. 数学分析模型
- ubantu 安装QQ2015