函数的学习

一、函数

函数:实现特定功能的代码块

优点:程序更简洁,加快运行速度,减少代码重复性

库函数

IO函数:scanf/printf/getchar/putchar/gets/puts

str函数:strlen/strcpy/strcat/strcmp

lib函数:atoi

数学函数:pow/sqrt

主函数:main,一个程序只能有一个main函数,任意函数可以调用main函数

1.1 函数定义格式

格式:

      存储类型  数据类型   函数名(参数列表)  //函数头

      {

           函数体;

        }

1.存储类型:函数省略存储类型默认是extern

            auto\staticl\extern\lregister

2.数据类型:基类型,构造类型,空类型void,指针类型

3.函数名:满足命名规范

           变量:小写    常量:大写      函数:下换线\驼峰命名

4.():函数标志,不允许省略     {}:不允许省略

5.参数列表:可有可无,当存在多个时,需要使用逗号隔开

1.2 函数的分类

1.库函数:系统自带的函数

2.自定义函数::由程序员手动封装的函数

   2.1有无参函数

有无参:参数列表决定,如果参数列表存在,则称为有参函数,否则称为无参函数

   2.2有无返函数

有无返:数据类型决定,如果数据类型是void,则称为无返函数,否则称为有返函数

void sum(void) 无参无返函数

void sum(int a) 有参无返函数

int Sum(void) 无参又返函数

int Sum(int a) 有参有返函数

1.3 无参无返函数

定义格式:

存储类型void函数名(void)

{

函数体;

      }

调用格式::

函数名();

1、自定义函数在main上面

2、自定义函数在main下面

注意:自定义函数在主函数下面定义时,需要声明函数

1.4全局和局部变量

1.全局变量

全局变量:定义在函数外的变量

内存:全局变量在静态区

作用域:从定义开始,到本文件结束

2.局部变量

局部变量:定义在函数内的变量,参数列表\

内存:在栈区

作用域:从定义开始,到本函数有效

3.全局和局部变量重名

1.全局变量和局部变量重名时,优先选用局部--->就近原则

2.局部和局部变量命名----》就近原则

1.5有参函数

 为什么有参函数?

被调用函数需要使用主调函数的局部变量,解决方式传参

定义格式:

存储类型   数据类型   函数名(参数列表)

      {

函数体;

      }

调用格式:

函数名(变量名1,变量名2);

char a[5]="2",b[5]="1";

strcmp(a,b);

实参和形参的类型

实参:变量,常量,表达式

形参:变量

规则:

1、个数一致

2、一一对应

3、类型建议一致:如果不一致以形参为主,发生强制转换

4、变量名可以不一致

5、实参只写变量名,形参需要写数据类型

数组做参数:只传递数组变量名,表示把整个数组传递过去

有参无返函数中 “int arr“为一个指针,指针类型在64位操作系统为8字节

练习2:在主函数定义一维数组初始化11 22 33 44 55

在自定义函数中实现输出数组元素

1.6有返函数

为什么有返?主调函数需要使用被调函数的局部变量,解决方式返回

定义格式:

存储类型数据类型函数名(参数列表)

{

函数体;

return 表达式;

}

调用格式:谁调用函数就返回给谁

1.变量=函数名(变量名1,变量名2...);

2.直接使用 函数名(变量名1,变量名2...);

char str[]="hello";

printf("%ld\n",strlen(str));

int len=strlen(str);

1.数据类型:如果数据类型时void,则默认是无返函数,不是void则称为又返函数

2.数据类型:可以省略不写,默认返回的数据类型时int

3.return:返口结宋出数

格式1:return 表达式

格式2:return(表达式)

表达式:可以是变量,常量,表达式

4.一个函数可以无数个return,但是只有第一个其效果

5.一个return只能返回一个值

6.数据类型建议和return的值的类型保持一致,如果不一致以数据类型为主,发生类型转换

1.7 递归

递归:函数的自身调用,把大问题分解为多个独立的子问题解决的方式,递归的本质是循环

直接递归:一个函数的自身调用
间接递归:多个函数之间相互递归调用循环执行速度快于递归,递归解决问题规模较大的情况,循环解决问题规模较小的情况

递归组成:递归边界、递归前进段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值