嵌入式学习的第十天-函数

一、函数定义的一般形式

1.无参函数定义的一般形式      

类型标识符 函数名()
{
    声明部分
    语句部分    
}

2.有参函数定义的一般形式

类型标识符 函数名(形式参数表列)
{
    声明部分
    语句部分
}

注: 1.函数类型如果不写默认为int型

        2.返回值类型与函数类型不一致,将返回值强制类型转换为函数类型

        3.函数的作用:降低耦合性,提高代码的复用性

二、形式参数和实际参数

        1.在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发

生函数调用时,函数中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放    

        2.实参可以是常量、变量或表达式

        3.在被定义的函数中,必须指定形参的类型

        4.实参与形参的类型应相同或赋值兼容

        5.在C语言中,实参向形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由

形参传回来给实参

三、函数的调用

        1.一般形式:函数名(实参列表);

        2. 若调用无参函数,则“实参表列”可以没有,但括号不能省略

        3.若实参表列包含多个实参,则各参数间用逗号隔开。

        4.实参与形参的个数应相等,类型应匹配,实参与形参按顺序对应,一一传递数据

        5.按自右而左的顺序求值

四、函数的嵌套调用

五、函数运行底层硬件逻辑的补充

五个寄存区:栈区(stack)、堆区(heap)、静态区、字符常量区、代码区

栈区:系统自动分配、释放空间,用于存放地址、函数定义的变量、形参(FILO:先进后出)未初

         始化时值为随机值,执行到变量定义时开辟内存空间,超过变量作用域范围回收内存空间

         堆区:手动申请开辟空间,

堆区:自己手动开辟空间,使用结束要记得释放空间,存储空间会比较大。(FIFO:先进先出)

静态区(全局区):存放在程序中定义的全局变量和静态变量。

字符串常量区:存放字符串常量,注意:不可以是字符型常量。eg:“hello”

代码区:是已经编译好的指令的存放空间;

例题:编写函数计算两个数的最大公约数和最小公倍数






int minOfTwoNumbers(int a,int b)
{
	return a < b ? a : b; 
}
int maxOfTwoNumbers(int a,int b)
{
	return a > b ? a : b; 
}
int GCD(int x,int y)
{
	int i;
	for(i = minOfTwoNumbers(x,y) ;i > 0 ;--i)
	{
		if (x % i == 0 && y % i == 0)
		{
			break;
		}
	}
	return i;
}
int LCM(int x,int y)
{
	int i;
	for(i = maxOfTwoNumbers(x,y);i > 0 ;++i)
	{
		if (i % x == 0 && i % y == 0)
		{
			break;
		}
	}
	return i;
}
int main(void)
{
	int ret1 = GCD(4,8);
	printf("最大公约数:%d\n",ret1);
	int ret2 = LCM(4,8);
	printf("最小公倍数:%d\n",ret2);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值