C语言-自定义函数
C语言自定义函数
--1-- 自定义函数定义 1.1 无参无返回值函数 1.2 无参有返回值函数 1.3 有参无返回值函数 1.4 有参有返回值函数 --2-- 函数的参数 2.1 形式参数介绍和使用 2.2 实际参数介绍和使用 2.3 函数的参数传递过程 --3-- 函数的声明及调用 3.1 函数的声明 3.2 函数的调用-----------------------------
【写在开头:】
『
函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。
自定义函数分为:
无参无返回值函数
无参有返回值函数
有参无返回值函数
有参有返回值函数
书写格式:
返回值类型 函数名称(函数参数){
函数体;
}
函数从定义到使用分三步:
1、声明 2、定义函数 3、调用函数
』
--1-- 自定义函数定义
1.1 无参无返回值函数
定义格式
一般形式:
void 函数名(){
声明部分; //定义局部变量
语句;
}
如:
void sum(){
//语句
}
1.2 无参有返回值函数
定义格式
一般形式:
返回值类型 函数名(){
声明部分;
语句;
return 返回值类型:变量或常量;
}
如:
int sum(){
return + ;
}
1.3 有参无返回值函数
定义格式
一般形式:
void 函数名(形式参数表列){
声明部分;
语句;
}
如:
void sum(int x, int y){
//运算
}
1.4 有参有返回值函数
定义格式
一般形式:
返回值类型 函数名(形参){
声明部分;
语句;
return 返回值类型变量或常量;
}
如:
int sum(int x, int y){
//运算
return x + y;
}
--2-- 函数的参数
2.1 形式参数介绍和使用
定义函数的时候,函数名后面小括号中的参数,简称行参。
/**
* 自定义sum函数
*
* @param x 形参1
* @param y 行参2
*
* @return 返回运算结果
*/
int sum(int x, int y){
//运算
return x + y;
}
注意:
1)形参定义后,并不会立即分配空间
在函数被调用的时候才会真正的分配存储空间
2)如果有多个形参,则用逗号“,”隔开
3)形参的类型可以不相同
4)在函数中不能定义和形参同名的变量
形参只出现在函数定义中,在整个函数体内部都可以使用,离开函数则不能再使用。
2.2 实际参数介绍和使用
调用函数时,函数名后面小括号的参数,简称实参。
实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
形参和实参的功能是作数值的传递。发生函数调用时,主调函数把实参的值传送给被调函数的形参,从而实现主调函数向被调函数数据的传送。
int main(int argc, const char * argv[]) {
int sum(int x, int y); //函数声明
int result = sum(, ); //此处3, 5是实参
return ;
}
/**
* 自定义sum函数
*
* @param x 形参1
* @param y 行参2
*
* @return 返回运算结果
*/
int sum(int x, int y){
//运算
return x + y;
}
注意:
实参可以是变量,也可以是常量,也可以是表达式。
主调函数和被调函数是相对而言的。
2.3 函数的参数传递过程
1)形参变量只有在被调用时才分配存储空间,在调用结束时,即刻释放所分配的内存单元。
2)实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传递给形参。
因此应预先用赋值,输入等方法使实参获得确定的值。
3)实参和形参在数量、类型、顺序上应严格一致。
--3-- 函数的声明及调用
3.1 函数的声明
在主调函数中,调用某被调函数之前应对该被调函数进行说明(声明)。如果不进行声明,则要将被调函数写在主调函数上方。
一般形式:
返回值类型 被调函数名(类型 形参,类型 形参…);
或
返回值类型 被调函数名(类型,类型…);
int sum(int x, int y); //函数声明
3.2 函数的调用
一般形式为:
函数名 (实参表列);
int result = sum(, ); //调用sum(int, int)函数
注意:
1)函数表达式
函数作为表达式中的一项出现在表达式中
m = max(34,10)+10;
2)函数调用作为另外一个函数的实参
3)函数的嵌套调用
max(max(34, 44), 299);
4)函数名不能和变量名同名
int sum = sum(, ); //错 函数名不能和变量名同名
【写在结尾:】
『封装,作为面向对象的特性之一,隐藏了代码的内部细节,提供一个对外的接口。C语言虽然是一个面向过程的语言,但是可以将一些常用的自定义函数封装一个自己的工具类,方便重用』
C语言-自定义函数的更多相关文章
- 模板语言 自定义函数simple_tag
模板语言自带的一些处理函数:通过管道符来处理 帮助方法:{{ item.event_start|date:"Y-m-d H:i:s"}} 转换成日期时间型{{ bio|trunc ...
- C语言 自定义函数按行读入文件
在之前的博客中 https://www.cnblogs.com/mmtinfo/p/13036039.html 读取一行的getline()函数是GNU 的扩展函数. 这里用自定义函数实现这个功能,从 ...
- C语言 自定义函数按行读入文件2
再改进下上次的读入一行函数,利用zlib库的gzgtec函数读取文件,动态分配内存,最后没有多出空行. 1 #include <stdio.h> 2 #include <stdlib ...
- C语言中的自定义函数
C语言中可以使用系统函数也可以使用自己的函数,就是自定义函数 自定义函数分为四种 第一种:无参无返回值的 函数的声明 void sayH(); 函数的实现 void sayH(){ printf(&q ...
- 【C语言】函数和自定义函数
函数,我之前也提到过一点点内容.其实函数是很好理解的,但是写起来又十分麻烦. 一. 函数引入 我们知道,C源程序是由函数组成的.请看下面的简单函数例子 #include <stdio.h ...
- C语言求x的y次方,自定义函数,自己的算法
我是一名高二中学生,初中时接触电脑,非常酷爱电脑技术,自己百度学习了有两年多了,编程语言也零零散散的学习了一点,想在大学学习计算机专业,所以现在准备系统的学习C语言,并在博客中与大家分享我学习中的心得 ...
- T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst、语言版本影响!
原文:T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst.语言版本影响! CSDN 的 Blog 太滥了!无时不刻地在坏! 开始抢救性搬家 ...
- R语言(自定义函数、循环语句、管道函数)
学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要.去年的参考资料是<R语言实战>,今年主要是看视频.推荐网易云课堂里的教程,很多资料都是很良心的~ 目前学 ...
- C语言基础:自定义函数
#include <stdio.h>//声明函数的原型:参数名可以省略 void printRectangle();void printfTriangle();void printhh(l ...
随机推荐
- python学习道路(day4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)
1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...
- xcode8升级后问题总汇
一.注释快捷键无法使用 command + / 快捷键无法使用,在终端执行以下命令,然后重启Xcode即可. 1 sudo /usr/libexec/xpccachectl 二.注释快捷键 Xco ...
- ActiveMQ简介
ActiveMQ 1.ActiveMQ是什么ActiveMQ是Apache推出的一款开源的完全支持JMS1.1和J2EE1.4规范的JMS Provider实现的消息中间件(Message Orien ...
- sed 引入shell变量
双单引号即可 1.eval sed ’s/$a/$b/’ filename2.sed "s/$a/$b/" filename3.sed ’s/’$a’/’$b’/’ filenam ...
- 20145320GDB调试汇编堆栈过程分析
GDB调试汇编堆栈过程分析 在这里首先感谢卢肖明的分析博客,为后面的同学减少了很多分析的负担. 分析过程 使用gcc - g example.c -o example -m32指令在64位的机器上产生 ...
- MonkeyTest简单实用介绍
什么是Monkeytest? monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键灯操作来对设备上的程序进行压力测试,检测程序发 ...
- Unable to the boot Simulator ! Mac开机现“CoreTelephony Trace File Error”,
OS X升级到El Capitan之后,提供一个跟安全相关的模式叫SIP(System Integrity Protection),又称rootless mode,这个新功能在強化OS X的安全性,它 ...
- 漫谈java重载与重写
重载(Overloading):为了让方法名相同而形参不同的构造方法同时存在,让类以统一的方式处理不同类型数据的一种手段 重写(Overriding):导出类对继承自基类的方法做出一定的修改,又称方法 ...
- 关于git自己所学到的东西
1.什么是Git(傻瓜内容跟踪器) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 Git 是 Linus Torvalds (Linus在1991年创建了 ...
- springmvc中的controller是单例的
今天发现spring3中的controller默认是单例的,若是某个controller中有一个私有的变量a,所有请求到同一个controller时,使用的a变量是共用的,即若是某个请求中修改了这个变 ...