C语言之自定义函数的实现

自定义函数的作用:
  1. 方便管理代码,编写程序时思路清晰。
  2. 代码复用,同一段代码可以在不同位置多次执行。
函数声明:

使用:返回值类型 函数名(类型 变量名,类型 变量名,…);
例如:int sum(int num1, int num2);
实际上,在函数声明时,变量的名称并不重要,只有返回值类型,函数名和变量的类型是编译器必须要知道的,因此变量名称是可以忽略的。下面的声明也是正确的:int sum(int , int);

注意

  1. c语言一般根据函数的功能来取函数名,全部使用小写单词,多个单词之间用下划线分隔,如:add_to_arr。
  2. 参数的个数、类型由函数的功能决定,被调用时由调用者提供。如果函数不需要任何参数则写void,不要空着
  3. 返回值类型根据函数的结果决定,如果不需要返回值则写void。
  4. 如果函数的定义出现在调用之前,声明可以省略。
  5. 函数声明时,参数的变量名可以省略。
  6. 如果不写返回值类型(会有警告),则默认为int类型返回值。
函数定义:

使用
返回值类型 函数名(类型 变量名,类型 变量名,…)
{
函数体;
return (数据);
}
例如:

int sum(int a, int b)
{
	return a + b;
}
函数的调用:

使用:函数(数据1,数据2…);
例如:sum(1, 2);
返回值会在函数执行完成后放置在调用位置,处理方式:

  1. 存储到变量中,长期使用。
  2. 立即使用,可以显示或参与运算。

函数之间参数的传递(值传递):

  • 调用者向被调用者传递,由实参向形参传递。
    1. 不同函数的命名空间都是相互独立的,函数之间变量名可以重名,互不影响。同一函数中,不能定义相同名字的变量,但是同一个程序中全局变量名和函数中的局部变量名可以同名,但是此函数中暂不能引用同名全局变量。

    2. 函数在调用时,被调函数会为形参开辟新的内存空间,主函数中的实参会赋值给这个空间,形参是好比实参的一个副本。因此,在被调函数中,形参值的任何改变都不会影响实参值。在被调函数结束时,这段空间就会被回收,形参数据不复存在,而实参还是调用前的实参。

    3. 函数之间不能通过值传递来共享变量。

      注意: 数组当作函数的参数时(在函数调用时的传递的数组会变成指针类型,此时就是引用传递了),长度会丢失,需要额外添加一个参数来传递它的长度。

#include <stdio.h>
void func(int arr[])		//其中,等价于 int* arr
{
	for(int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
		printf("%d\n",arr[i]);			//运行结束后,只输出一个 1
}

int main()
{
	int arr[5] = {1,2,3,4,5};
	func(arr);
}

  • 被调用者向调用者传递,使用return返回数据。
    1. 不写return语句也会有返回值。
    2. 调用者和被调用者会在内存中约定一个空间用于存储返回值,return语句的功能之一就是把一个数据存储到这个空间。如果不写return语句,调用者就会得到一个默认值(不确定)。
#include <stdio.h>
int func(void)
{
	int arr[20] = {};		//如果注释此行,输出为1,不注释,输出为0。
}

int main()
{
	int num = 9999;
	num = func();
	printf("%d\n",num);
}
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值