欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言函数(一)

程序员文章站 2022-07-12 09:55:31
...

先来一个简单的例子

# include <stdio.h>

// max是函数的名字,i和j是形式参数,简称形参,void表示函数没有返回值
void max(int i, int j)
{
	if (i > j)
		printf("%d\n", i);
	else
		printf("%d\n", j);
}
int main(void)
{
	int a, b, c, d, e, f;
	a = 1, b = 2, c = 3, d = 6, e = -4; f = 34;
	max(a, b);
	max(c, d);
	max(e, f); 
	
	return 0;
}

C语言函数(一)
如上图所示:当程序进入主函数之后,运行到max函数的时候,编译器会寻找程序中有没有一样的函数,要函数名,返回值类型,参数类型都完全一致的函数,找到之后,编译器会把实际参数,传递给对应的形式参数,然后进入定义的函数体,执行相应的程序代码,并且执行完函数之后,就会把刚定义的变量都销毁,把内存释放。

为什么需要函数

  1. 避免了重复性操作
  2. 有利于程序的模块化
    C语言函数(一)
    解释:函数的模块化,就是把一个很复杂的事情,划分为许多小的事务,然后一步步的实现小的事务,最后把复杂问题解决。就像上面的图,像一棵树一样,把复杂事务模块化,是问题更简单。

什么是函数

逻辑上:能够完成特定的功能的独立的代码块
物理上:能够接收数据,能够对接收的数据进行处理,能够将数据处理的结果返回。

# include <stdio.h>

int f(void) // 括号中的void表示该函数不能接收数据,int表示函数返回值是int类型
{
	return 10; // 向主调函数中返回10
}
int main(void)
{
	int j = 88;
	j = f();
	printf("%d\n", j);  //  10;
	return 0;
}

总结:函数是个工具,它是为了解决大量类似问题而设计的;函数可以当成一个黑匣子;

如何定义一个函数

函数的返回值 函数的名字(函数的形参列表)
{
函数的执行体
}

  1. 函数定义的本质是详细描述函数之所以能够实现某个特定功能的具体方法
  2. return表达式的含义:
    • 终止被调函数,向主调函数返回表达式的值
    • 如果表达式为空,则只终止函数,不向被调函数返回任何值
  3. 函数返回值的类型也成为函数的类型,因为如果函数名前的返回值类型和函数执行体中的return表达式中表达式的类型不同的话,则最终函数返回值的类型 以函数名前的返回值类型为准
	int f()
	{
		return 10.5;  // y因为函数的返回值类型为int,所以最终f返回的是10,不是10.5
	}

return 和 break 的区别

return是终止函数,而break是终止循环。

函数的分类

有参函数 和 无参函数
有返回值函数 和无返回值函数
库函数 和 用户自定义函数
普通函数 和 主函数(main函数)
值传递函数 和 地址传递函数

一个程序必须且只能有一个主函数,主函数可以调用普通函数,普通函数不能调用主函数,普通函数可以相互调用,主函数是程序的入口也是函数的出口。

函数实例----判断一个数是否是素数

# include <stdio.h>

bool IsPrime(int val)
{
	int i;
	for (i=2; i<val; i++)
	{
		if (val % i == 0)
			break;
	}
	if (i == val)
		return true;
	else
		return false;
}

int main(void)
{
	int val;
	printf("请输入您相判断的数字:");
	scanf("%d", &val);
	
	if (IsPrime(val))
		printf("YES!\n");
	else
		printf("NO!\n");
	
	return 0;
}