c语言:初识函数

前言: 这篇文章是本人在学完函数后的知识梳理,特在此发表一些自己的理解,希望能给大家一些帮助。
在这里插入图片描述

一.函数的理解

对于函数其实我们都不陌生,在初高中时就常常与函数打交道,在数学中我们常用 y=f(x) 来表示函数,它由自变量,因变量,对应法则三部分组成,那么在c语言中函数又有什么不同呢?

在c语言中,函数通常由函数头,函数体两部分组成。

1.函数体:

函数体是编程语言中定义一个函数功能的所有代码组成的一个整体。

简而言之就是用花括号括起来的若干语句,里面的语句能完成一个具体的功能,例如:一个最基本的main()函数

int main()
{
	printf("hello,world");
	return 0;
}
```在花括号里的printf和return就是函数主体

2.函数头

函数头是指在函数体之前的所有部分它给出了该函数的返回类型,每个参数的次序和类型等函数原型信息

简而言之函数头就是除去函数体的部分。
它通常由返回值,函数名,参数三部分组成。

int is_prime(int x)
{
	int n = 0;
	for (n = 2; n <= sqrt(x); n++)
	{
		if (x % n == 0)
			return 1;
	}

}
...这是一个判断该数是否为素数的函数,如果是素数就返回1
这里int就是说明它返回的是一个整数,is_prime就是它的函数名,
(int x)就是它的参数   

 

ps. 一个函数头可以没有返回类型和参数,那么我们就会在它原本放返回类型和参数的地方放个void或者什么都不放。例如:int main(),就没有参数。

二.函数的分类

在c语言中函数分为两大类,库函数和自定义函数。

1.库函数

一般指编译器提供的可在c源程序中调用的函数。

其实就是由原来的程序员写好的函数放在c语言库中,这样如果你想要实现一个功能,就只需要调用这个函数就可以了,不必再自己写一个函数。

例如:我想要给x开平方,我只需要sqrt(x)就可以了。但记住一定要引用头文件,sqrt的头文件是#include<math.h>。

调用库函数就好像去别人家里借东西,你借了东西肯定得跟东西的主人说一声吧,借的东西不同,那么它的主人可能也不同,所以就会有着不同的头文件,再比如:printf,scanf这些函数的主人就是#include<stdio.h>

库函数有那么多我怎么记得完呢?这时候就需要借助搜索工具了,这里我使用的是MSDN,具体的百度上可以搜到

2.自定义函数

作为一个程序员,遇到的问题数不胜数,仅靠库函数是远远不够的,更多的时候是需要我们自己写函数,当然一个函数不是随便写的,它有着一定的格式

int is_prime(int x)
{
	int n = 0;
	for (n = 2; n <= sqrt(x); n++)
	{
		if (x % n == 0)
			return 1;
	}

}
int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		int p = is_prime(i);
		if (p != 1)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

这里我引用了一个求100-200间素数并打印的代码,先简单的说说代码的运行规则。

首先从main函数进入,定义i变量,再用一个for循环得到100-200之间的所有数,当i=100时i进入函数is_prime(i),经过一系列的运算得到一个返回值并将它放到p中,如果p不等于1,那么就将i打印出来;同理当i=101,102,103…时,直到i=201时结束循环的同时打印出了100-200间所有素数。

这里我自定义了一个求素数的函数。它的函数名我改为is_prime(函数名可以任取,但建议取得有意义),可以看到的是我写了两次is_prime,一次是在main函数内,一次是在main函数外。main函数外的is_prime是我自己写的自定义函数,而在main函数内的is_prime是我再调用这个函数。现在来仔细讲讲这两个地方

1.main函数外的is_prime:根据上面函数的理解,看的出它的函数头就是int is_prime(intx),再仔细看函数头的三要素:int->返回类型,is_prime->函数名,(int x)->参数(ps:int x内的int是指x是整数)。它的函数体就是花括号内的代码,用来帮助我判断是否为素数。
2.main函数内部的is_prime:就是在使用这个函数,我将i传参给x用来判断i是不是素数,如果i不是素数那么就返回1(int p=is_prime(i))就变为了int p=1),再根据后面的if判断就可以打印出素数了

好了,以上就是我的知识梳理了,如果有什么不对或者漏掉的地方还请您指出,也希望这篇博客能对您有所帮助。

在这里插入图片描述

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咸蛋挞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值