函数与宏定义

本文详细介绍了C语言中的函数概念,包括函数的定义、声明、调用和传值方式。此外,还讨论了变量的作用域(局部与全局)和存储类型(auto、register、static、extern)。最后,讲解了递归函数的设计与调用,包括直接递归和间接递归,并给出了递归求阶乘的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文介绍函数与宏定义。


一、函数的概念

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));
}

总结

以上就是今天要讲的内容,本文简单介绍了函数与宏定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值