前言
本文介绍函数与宏定义。
一、函数的概念
1、函数的定义
自定义函数的形式:
【存储类型符】【返回值类型符】函数名 (【形参说明表】)
{
函数语句体
}
(1)【存储类型符】——函数作用范围,默认情况为可在其他文件中调用的外部函数extern,另一种形式为内部函数static。
(2)【返回值类型符】——默认情况·为int(return 表达式的值),无返回值用空类型void(return(也可不写))。
(3)函数名——合法标识符。
(4)【形参说明表】——存储类型符+变量名,可缺省或者写void表示无参数。
2.函数的声明和调用
(1)函数的声明:【存储类型符】【返回值类型符】函数名 (【形参说明表】)
(2)函数的调用:函数名(实参表)——函数无返回值;变量名=函数名(实参表)——函数有返回值。【数据类型以返回值类型为主】
3.函数的传值方式
(1)形参:定义时的变量;实参:调用时的变量。两者一一对应,实——>形,单向传递
(2)函数定义放在main函数后面:必须函数声明;否则,不需要。
二、变量的作用域和存储类型
1.变量的作用域
(1)局部变量:在函数内部或某个某个控制块内部定义的变量,存储类型默认值为auto型;
(2)全局变量:在函数外面定义的变量,存储类型默认值为extern型。
2.变量的存储类型
(1)auto型在内存的动态存储区;
(2)register型在寄存器;
(3)static和extern型在静态存储器。
注:1.auto型和register型只用于定义局部变量;
2.static型均可,若定义时没有赋初值,系统自动赋为0;
3.static int c=3——第n+1次调用时会保留第n次的值。
三、递归函数的设计和调用
1.调用
(1)直接递归调用:在函数定义的语句中,存在着调用本函数的语句;
(2)间接递归调用:在不同的函数定义中,存在着互相调用函数语句。
2.设计
(1)问题的后一部分与原始问题类似;
(2)问题的后一部分是原始问题的简化。
例:用递归函数法求n
#include <stdio.h>
long fac(int n) {
long res;
if(n==0||n==1)
res=1;
else
res=n*fac(n-1);
}
int main() {
int n;
printf("请输入正整数n的值:");
scanf("%d",&n);
printf("%d!=%ld",n,fac(n));
}
总结
以上就是今天要讲的内容,本文简单介绍了函数与宏定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)