C学习笔记-函数
函数的定义
返回值类型 函数名([[参数类型 参数名1],[参数类型 参数名2],···,[参数类型 参数n]])
{
//执行语句
return 返回值;
}
- 返回值类型:用于限定函数返回值的数据类型;
- 函数名:表示函数的名称,该名称可以根据标识符命名规范来定义;
- 参数类型:用于限定调用方法时传入参数的数据类型;
- 参数名:用于接收调用方法时传入的数据;
- return关键字:用于结束函数,并返回函数指定类型的值
- 返回值:被return语句返回的值,该值会返回给调用者。如果函数没有返回值,则返回值类型要声明为void,此时,函数体中的return语句可以省略不写
函数的调用
函数在使用前必须定义或声明
先定义再调用
int getLong(int num)
{
···
}
int main()
{
getLong(5);
}
这种方式就是先定义再使用。
先声明再调用
int getLong(int num); //此处可以写为int getLong(int);
int main()
{
getLong(5); //5为实参
}
int getLong(int num) //num为形参
{
···
}
这种方式就是先声明再调用。
无参函数与有参函数
无参函数:参数列表为空的函数
void func()
{
//代码
}
有参函数:有参数列表的函数
void func(intn, int m)
{
//代码
}
函数的形参和实参
主调函数与被调函数之间,需要用参数来传递数据。
在定义函数时函数名后面括弧中的变量名称为“形式参数”,称为形参
在调用函数时,函数名后面括号中的变量或表达式称为“实际参数”,称为实参
关于实参与形参的一些要点
- 形参在未出现函数调用时,他们并不占用内存单元,只有在发生函数调用的时候形参才被分配内存,函数调用完成后,形参所占的内存被释放
- 实参可以是变量,常量或者表达式
- 在定义函数时,一定要指定形参的数据类型
- 形参与实参的数据类型一定要可兼容
- 在C语言中,实参与形参的数据传递是“值传递”,即单向传递,只由实参传递给形参,而不能由形参传递给实参。
函数的返回类型与返回值
- 函数的返回值通过函数中的return获得,如果函数的返回值为void可以不需要return语句
- 函数return语句中的返回值数据类型应该与函数定义时相同
- 如果函数中没有return语句,那么函数将返回一个不确定的值
exit函数
exit函数可以在任意位置退出整个程序
exit(1);
函数的递归
函数的自我调用,叫做函数的递归
递归必须要有一个结束条件
递归经典案例:斐波那契数列
int fib(int n)
{
if (n == 0)
return 0;
if (n == 1)
return 1;
if (n > 1)
return fib(n - 1) + fib(n - 2);
}
递归经典案例:汉诺塔
- 将1针上n-1个盘借助3针移动到2针上;
- 将1针上剩下的一个盘移动到3针上;
- 将n-1个盘从2针借助1针移动到3针上
void hanoi(int n, int one, int two, int three)
{
if (n == 1)
printf("%d->%d\n", one, three);
else
{
hanoi(n - 1, one, three, two);
printf("%d->%d\n", one, three);
hanoi(n - 1, two, one, three);
}
}
递归的优缺点
优点:让有些问题提供了最简单的方法
缺点:容易耗尽资源,代码难懂的难以维护
C学习笔记-函数的更多相关文章
- 《python基础教程(第二版)》学习笔记 函数(第6章)
<python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params): block return values 记录函数:def f ...
- swift swift学习笔记--函数和闭包
使用 func来声明一个函数.通过在名字之后在圆括号内添加一系列参数来调用这个方法.使用 ->来分隔形式参数名字类型和函数返回的类型 func greet(person: String, day ...
- c语言学习笔记 函数数组传递笔记
今天学习c语言的一个小例子,果然还是陷入了php的编程习惯里,这里记录一下. #include <stdio.h> //例子很简单,就是编写一个函数把传递进来的数组里的值都赋值为1而已 / ...
- 《JS语言精粹》学习笔记 函数部分の闭包
要理解闭包,首先要理解变量作用域,变量的作用域就两种,全局变量和局部变量,函数内部可以直接读取全局变量,函数外部无法读取函数内部的局部变量. 闭包定义:能读取函数内部局部变量的函数就是闭包,而只有函数 ...
- Python学习笔记——函数
1.标准类型内建函数 <1>type() —— 返回对象的类型 <2>cmp() —— 比较两个对象,返回两个对象的ASCII码的差 <3>str().repr() ...
- JavaScript学习笔记-函数
函数的两种创建方式:函数定义表达式.函数声明语句 编译时,函数声明语句创建的函数会‘被提前’至外部函数的作用域顶部,在该作用域内可以被随意调用: 而函数表达式创建的函数,要调用它必须赋值给一个变量,编 ...
- JavaScript学习笔记-函数实例
函数实例 var p = { a:15, b:'5', f1:function(){ var self = this; console.log(self.a+self.b); f2(); functi ...
- JavaScript学习笔记——函数
javascript函数的声明和调用 将完成某一特定功能的代码集合起来,可以重复使用的代码块. 一.函数的声明方式(创建) A.基本语法 function 关键字 function 函数名([参数1] ...
- MySQL学习笔记——函数
常用函数 ALTER TABLE tb_emp ); #插入数据 INSERT INTO tb_dept() VALUE(,'市场部','负责市场工作'); # concat 连接 SELECT CO ...
- Android学习笔记函数
//调用新的Activity Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivity(intent ...
随机推荐
- 题解 [51nod1461] 稳定桌
题面 解析 一开始看上去毫无思路啊. 但想通了就很很简单. 我们枚举每种长度的边作为最大的边, 于是长度比当前大的边就要砍掉, 而长度比当前小的边只能留下小于等于当前长度的边数, 砍掉代价最小的几条就 ...
- ubunut:子进程 post-installation script 返回了错误号 1
解决dpkg/apt-get error : 子进程 post-installation script 返回了错误号 1 这个不太好解决,感觉这个比较好,未测试 https://blog.csdn.n ...
- JavaScript变量、作用域和内存问题总结
㈠理解基本类型和引用类型的值 ⑴JavaScript变量可以用来保存两种类型的值:基本类型值和引用类型值. ⑵基本类型的值源自以下 5 种基本数据类型:Undefined.Null.Boolean. ...
- 51 Nod 1354 选数字(体现动态规划的本质)
1354 选数字 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 当给定一个序列a[0],a[1],a[2],...,a[n-1] 和一个整数K时 ...
- 两种dp模型
两个常见模型 bzoj 4321 题意:编号为1~n的人排成一排,问有多少种排法使得任意相邻两人的编号之差不为1或-1. n<=1000 排列计数问题:考虑把数从小到大插入的过程进行dp. 设 ...
- 追本溯源:substr与substring历史漫话
引子: 很多时候,当我要字符串截取时,我会想到substr和substring的方法,但是具体要怎么传参数时,我总是记不住.哪个应该传个字符串长度,哪个又应该传个开始和结尾的下标,如果我不去查查这两个 ...
- 用HQL自己写了个update!!!
原来代码: public void updateSj(String jsly, Integer zu,String sj) { if (!StringUtils.isBlank(jsly)&& ...
- git与github建立仓库连接步骤(纯小白教程)
一.先对git 进行用户设置 首先你得在网上下载git软件并且安装,一路默认安装就好了,然后就可以开始本地仓库的建立了.打开你安装好的git, 在开始菜单里面找到git文件夹里面的git bash端 ...
- 笔记:Hive的主要技术改进(Major Technical Advancements in Apache Hive)
http://web.cse.ohio-state.edu/hpcs/WWW/HTML/publications/papers/TR-14-2.pdf (辅助参考:https://cwiki.apa ...
- Kafka 概述
Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. Kafka 中,客户端和服务器之间的通信是通过 TCP 协议完成的. 一.传统消息 ...