C语言函数的使用

问题引入
有时候,我们经常需要在一个程序中,对一个数组进行
键盘输入,打印数组元素值。
有些代码块,功能是相同的,只有数组名和元素个数等参数不一样,
代码形式是一样的,对于同一功能而不同参数的代码块,那么咱就可以
将其封装成一个函数,如果您需要用到这样的功能或者代码块,那么我们
就不需要重复的去写代码块,我们只需要调用这个函数。

函数

函数是完成某个功能的指令序列的封装。
函数有什么特点:
相同功能的代码块,重复利用、模块化思想。

C语言中函数的语法形式

函数返回值类型 函数名(输入参数列表) --> 函数头
{
函数的具体实现 --> 函数体
}

“函数返回值类型”:
函数最终返回的结果的类型。
“单值类型” : 结果用一个寄存器或两个寄存器可以保存的值。
int / long

void : 表示该函数无返回值。(void不可以省略)
问题
return语句后面的那个表达式的值,就是函数调用表达式的值。
但是有些函数并没有返回值,难道说这个函数调用表达式的值没有值吗?
函数调用表达式任然会有一个值,只不过我们不知道这个值时多少,R0中
一定会有一个确定的值(undefine,未知)
例子:

void print_array(int a[], int n)
			{
				int i;
				for(i = 0 ; i < n ; i++)
				{
					printf("%d ", a[i]);
				}
				printf("\n");
				
				//return ;
			}

“函数名” : C语言中标识符的规定。

			   array_sum 
			   Shuzu_he 
			  	“输入参数列表” : 规定输入参数必须要有 类型 参数名 ,
				 参数与参数之间用 ',' 隔开
	类型1 参数名1 , 类型2 参数名2 , .......  

void : 表示该函数不带参数。(void可以省略)
return语句 :
return 返回的意思。return只能用在函数内部。
表示函数结束的意思。
return ; 函数结束,不带任何返回值。
在函数的返回值类型为void的时,可能需要用到上述语句。 return 表达式 ; 函数结束,并且带一个返回值,“表达式”的值。
函数的返回值类型,就是return 语句后面的“表达式”的值的类型。

函数的调用过程
函数调用: 调用一个已经实现了的 函数去执行函数中封装的指令序列。
a: 需要指定是哪个函数/任务 ,指定任务名/函数名
b: 完成该任务/函数 需要有哪些实际上的参数(实际参数)
实际参数(实参): 调用该函数式传入的参数。
形式参数(形参): 定义或设计该函数时的参数。
参数的传递,是将 形参 = 实参的值!!
“实参” : 就是一个表达式
指定实参时,不需要指定实参的类型。
实参需要与形参一一对应(不仅仅实参与形参的个数对应,
并且实参与形参的类型也要相对应)!!!
例:

int main()
			{
				int a[10];
				input_array(a , 10);//调用函数
				
				int s = sum(5  , 6);
				printf("s == %d\n", s);
			} 

函数的调用过程

		a、把实参的值 赋值给 相对应的形参
		b、跳转到函数中去执行函数中的指令序列。
			直到遇到 return语句 或者 函数语句全部执行完毕。
			return 后面的表达式的值,将作为整个函数调用表达式的值。 
			
			当函数执行完毕,那么此时CPU会回到函数调用处,
			继续往下面运行。 

函数声明
就是告诉编译器 这个“名字(标识符)”是一个函数名,
在后面的某个位置会定义的。

函数声明: 
	void input_array(int arr[], int n)  ;    //函数头 

外部的函数声明:
extern 外部函数的头部;

本文件中的函数的声明:
函数头部分 ;

变量声明:
外部的全局变量的声明 :
extern 变量的类型 变量;
例子: 假设你想要在1.c中去使用2.c中的那个变量

2.c                  1.c 
					//对2.c中变量a进行外部声明 
					extern int a;
int a = 250;     	printf("2.c =>  a ==%d\n", a);

数组声明 :
int a[3][4];
数组的声明与普通变量的声明类似!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampLixxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值