首页 > 其他分享 >c语言——函数及递归

c语言——函数及递归

时间:2023-01-14 16:31:22浏览次数:47  
标签:__ 头文件 函数 形参 函数调用 递归 实参 语言

程序中一旦调用了某个函数,该函数就会完成特定的计算,然后返回到调用它的地方

函数分为库函数和自定义函数

一、库函数

io函数都在头文件stdio中

字符串操作函数都在头文件string中

数学函数都在头文件math中

     平方根函数 sqrt (x)

     绝对值函数 fabs (x)

     幂函数 pow (x, n) 

     指数函数 exp (x):ex

     以e为底的对数函数 log (x)

     以10为底的对数函数 log10 (x)

字符操作函数

内存操作函数

时间/日期函数

二、自定义函数

函数定义:

函数类型 函数名(形参表)//函数首部,函数名自定义,见名知意,参数之间用逗号分隔,每个参数前类型必须分别写明,不能两个参数共用一个类型
{ //函数体
函数实现过程
return 表达式
};
//只能返回一个值,把运算结果返回给主函数,表达式类型与函数类型一致
无返回值用void定义返回值类型和函数类型,return语句无需表达式或直接省略用void定义参数表示没有参数。
函数类型不写默认int,形参若没有可以省略,只写()

一般把main函数放在前面,函数放在后面,为了让编译器知道我们有函数,在main上面要加一句函数声明,写法和函数首部相同并加上分号。

在main函数中使用到函数时,调用函数

调用函数的形式:函数名(实际参数表)

当实参有多个时,后面的先计算

对于有返回值的函数,函数调用通常出现在两种情况:

1.函数调用可以放到一个数值表达式中,例如volume=cylinder(radius,height);

2.函数调用可以作为另一个函数调用的参数,例如printf("%f",cylinder(radius,height));

函数调用的过程:

从main函数开始,遇到函数调用,主函数暂停,执行相应的函数,函数执行完毕后,返回主函数并将返回值带回主函数,从原先暂停位置继续执行。

参数传递:实参→形参(单向传递)  数组函数传递的是首元素的地址

1.把实参值复制给形参

2.形参实参一一对应,数量一致,类型一致,顺序一致

3.形参:变量,用于接收实参传递过来的值

   实参:常量、变量、表达式、函数

函数结果返回形式:return 表达式;或return (表达式);

如果返回类型与函数类型不同,转换为函数类型

形参实参有自己的空间,形参的改变不会改变实参

如何让形参改变使实参改变

函数调用实参&a,&b

形参int*pa,int*pb

三、函数的分文件编写

1.创建后缀名为.h的头文件

2.创建后缀名为.cpp的源文件

3在头文件中写函数的声明

4.在源文件中写函数的定义

这里报错的同学, 是因为你在别的文件中也有swap函数的定义

记得把前面文件里的swap定义注释掉再运行分文件!

 引用自己其他文件的头文件#include “文件名”

为防止一个头文件被引用多次

#ifndef __ADD_H__   //如果没有定义过__ADD_H__
#define __ADD_H__ //从这里开始执行,定义__ADD_H__
函数声明
#endif //从这里结束

printf("%d",printf("%d",printf("%d",43)))

输出4321,因为printf返回的是字符的个数,43是2个,2是1个

四、递归

常见错误

栈溢出stack overflow

c语言——函数及递归_头文件

标签:__,头文件,函数,形参,函数调用,递归,实参,语言
From: https://blog.51cto.com/u_15901728/6007625

相关文章

  • C语言中类型转换的两种方式
    类型转换1.定义:不同类型的数据混合运算时需要进行类型转换(conversion),将不同类型的数据转换成相同类型的数据后再进行计算。2.分类:(1)隐式类型转换*编译系统自动进行转换。*在......
  • 20 个 JS 工具函数助力高效开发
    日常开发中,面对各种不同的需求,我们经常会用到以前开发过的一些工具函数,把这些工具函数收集起来,将大大提高我们的开发效率。1、校验数据类型export const typeOf = fu......
  • go语言杂记1
    1.配置环境变量对于Linux和Mac用户,mkdir/data/go_pathvim~/.bashrc加入以下几行        exportGOROOT=/usr/local/go($GOROOT和$GOPATH这两个路径......
  • 认识Java语言
    Java:高级程序设计语言优点:1.健壮性:有自动垃圾回收机制(GC)2.可移植性、跨平台:一次编译,多次运行(程序不变,平台可变)实际上Java程序并没有直接和操作系统打交道,而是通过JVM......
  • 如何用电脑写C语言
    大学教学都是用的devidc++或者c语言实操系统,我们以c语言实操系统为例1.浏览器打开:​​点击下载​​用baidu云或者网站上显示支持的网站下载软件即可,如图所示2.下载完成后双......
  • C语言中~与!的区别
    !是逻辑非or否定​凡是a的值不为0的,!a就等于0;​如果a的值为0,则!a的值为1而~这个是按位取反比如inta=2;用二进制表示为00000010;则!a=0......
  • 字符分类函数和字符转换的简单使用
    #include<stdio.h>#include<ctype.h>intmain(){chararr[]="IAmAStudent";inti=0;while(arr[i]!='\0'){if(isupper(arr[i])){arr[i]=tolower(arr[i]);......
  • 快速排序算法的递归,迭代法实现(C++)
    tags:DSAC++Sort思路分治法主要分成下面三个步骤:选定基准值(默认是数组首元素),这里称为pivot找到基准值待放置的位置(排序之后的位置),将大于基准值的元素放在基准值......
  • 方便的格式化OutputDebugString输出函数
    OutputDebugString使用只能输入一个参数,在实际使用中带来很大的不便,下面改造后的函数就很好了,想怎么输出自己定。voidOutputDebugPrintf(constchar*strOutputString,........
  • 【读书笔记】JS函数式编程指南
    第一章海鸥群可以合并和繁育conjoinbreedvarresult=flock_a.conjoin(flock_c).breed(flock_b).conjoin(flock_a.breed(flock_b)).seagulls;但是由于有内部状态,内......