C 语言函数

C 语言函数

在本教程中,将向您介绍C语言编程中的函数(用户定义函数和标准库函数)。此外,您还将学习为什么在编程中使用函数。

函数是执行特定任务的代码块。

假设您需要创建程序来创建一个圆并为其着色。您可以创建两个函数来解决此问题:

  • 创建一个圆的函数
  • 创建颜色的函数

将复杂的问题分成较小的块可以使我们的程序易于理解和重用。

C 语言函数的优势

C函数具有以下优点。

  • 通过使用函数,我们可以避免在程序中一次又一次地重写相同的逻辑/代码。
  • 我们可以在程序中以及在程序的任何位置多次调用C函数。
  • 当大型C程序被划分为多个函数时,我们可以轻松地对其进行跟踪。
  • 可重用性是C函数的主要成就。
  • 但是,函数调用始终是C程序的开销。

函数包含哪些方面

C函数包含三个方面。

  • 函数声明 必须在C程序中全局声明函数,以告知编译器函数名称,函数参数和返回类型。
  • 函数调用 可以从程序中的任何位置调用函数。参数列表在函数调用和函数声明中要相同。我们必须传递与函数声明中声明的函数数量相同的函数。
  • 函数定义 它包含要执行的实际语句。这是调用函数时控件所涉及的最重要方面。在这里,我们必须注意,该函数只能返回一个值。
序号 C函数方面 语法
1 函数声明 return_type function_name(argument_list);
2 函数调用 function_name(argument_list)
3 函数定义 return_type function_name(argument_list){function body;}

使用C语言创建函数的语法如下:

示例

c 复制代码
return_type function_name(data_type parameter...){
    //要执行的代码
}

函数类型

C语言编程中有两种类型的函数:

  1. [标准库函数]:在C头文件中声明的函数,例如scanf(),printf(),gets(),puts(),ceil(),floor()等。
  2. [用户定义的函数]:C程序员自定义的函数,我们可以多次使用它。它降低了大型程序的复杂性并优化了代码。

返回值

C函数可能会也可能不会从该函数返回值。如果您不必从函数返回任何值,则将void用作返回类型。

让我们看一个简单的C函数示例,该函数不会从该函数返回任何值。

没有返回值的示例:

示例

c 复制代码
void hello(){
    printf("hello c");
}

如果要从函数返回任何值,则需要使用任何数据类型,例如int,long,char等。返回类型取决于要从函数返回的值。

让我们看一个简单的C函数示例,该函数从该函数返回int值。

返回值示例:

示例

c 复制代码
int get(){
    return 10;
}

在上面的示例中,我们必须返回10作为值,因此返回类型为int。如果要返回浮点值(例如10.2、3.1、54.5等),则需要使用float作为方法的返回类型。

示例

c 复制代码
float get(){
    return 10.2;
}

现在,您需要调用该函数以获取该函数的值。

函数调用的不同方面

函数可以接受也可以不接受任何参数。它可能会或可能不会返回任何值。基于这些事实,函数调用有四个不同方面。

  • 没有参数且没有返回值的函数
  • 没有参数但有返回值的函数
  • 有参数且无返回值的函数
  • 带有参数和返回值的函数

不带参数和返回值的函数示例

实例1

示例

c 复制代码
#include<stdio.h>
void printName();
void main ()
{
    printf("Hello ");
    printName();
}
void printName()
{
    printf("hello c");
}

输出结果

c 复制代码
hello c

实例2

示例

c 复制代码
#include<stdio.h>
void sum();
void main()
{
    printf("\n计算两个数的和:");
    sum();
}
void sum()
{
    int a,b; 
    printf("\n输入两个数字");
    scanf("%d %d",&a,&b); 
    printf("总和是 %d",a+b);
}

输出结果

c 复制代码
计算两个数的和:

输入两个数字 10 
24 

总和是 34

不带参数返回值的函数示例

实例1

示例

c 复制代码
#include<stdio.h>
int sum();
void main()
{
    int result; 
    printf("\n计算两个数的和:");
    result = sum();
    printf("%d",result);
}
int sum()
{
    int a,b; 
    printf("\n输入两个数字");
    scanf("%d %d",&a,&b);
    return a+b; 
}

输出结果

c 复制代码
计算两个数的和:

输入两个数字 10 
24 

34

示例2:程序计算正方形的面积

示例

c 复制代码
#include<stdio.h>
int sum();
void main()
{
    printf("计算这个正方形的面积\n");
    float area = square();
    printf("正方形的面积: %f\n",area);
}
int square()
{
    float side;
    printf("输入边长(以米为单位): ");
    scanf("%f",&side);
    return side * side;
}

输出结果

c 复制代码
计算这个正方形的面积 
正方形的面积: 10 
输入边长(以米为单位): 100.000000

带参数且不带返回值的函数示例

实例1

示例

c 复制代码
#include<stdio.h>
void sum(int, int);
void main()
{
    int a,b,result; 
    printf("\n计算两个数的和:");
    printf("\n输入两个数字:");
    scanf("%d %d",&a,&b);
    sum(a,b);
}
void sum(int a, int b)
{
	printf("\n总和是 %d",a+b);    
}

输出结果

c 复制代码
计算两个数的和:

输入两个数字 10 
24 

总和是 34

示例2:程序计算五个数字的平均值。

示例

c 复制代码
#include<stdio.h>
void average(int, int, int, int, int);
void main()
{
    int a,b,c,d,e; 
    printf("\n要计算五个数的平均值:");
    printf("\n输入五个数字:");
    scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
    average(a,b,c,d,e);
}
void average(int a, int b, int c, int d, int e)
{
	float avg; 
	avg = (a+b+c+d+e)/5; 
	printf("给定五个数字的平均值 : %f",avg);
}

输出结果

c 复制代码
要计算五个数的平均值:
输入五个数字:10 
20
30
40
50
给定五个数字的平均值 : 30.000000

带参数和返回值的函数示例

实例1

示例

c 复制代码
#include<stdio.h>
int sum(int, int);
void main()
{
    int a,b,result; 
    printf("\n计算两个数的和:");
    printf("\n输入两个数字:");
    scanf("%d %d",&a,&b);
    result = sum(a,b);
    printf("\n总和是 : %d",result);
}
int sum(int a, int b)
{
	return a+b;
}

输出结果

c 复制代码
计算两个数的和:
输入两个数字:10
20 
总和是 : 30

示例2:检查数字是偶数还是奇数的程序

示例

c 复制代码
#include<stdio.h>
int even_odd(int);
void main()
{
 int n,flag=0;
 printf("\n检查一个数字是偶数还是奇数");
 printf("\n输入数字: ");
 scanf("%d",&n);
 flag = even_odd(n);
 if(flag == 0)
 {
 	printf("\n数字是奇数");
 }
 else 
 {
 	printf("\n这个数是偶数");
 }
}
int even_odd(int n)
{
	if(n%2 == 0)
	{
		return 1;
	}
	else 
	{
		return 0;
	}
}

输出结果

c 复制代码
检查一个数字是偶数还是奇数
输入数字: 100
这个数是偶数

C 标准库函数

标准库函数是C语言中的内置函数,它们被分组并放置在称为库的公共位置。这些函数用于执行某些特定操作。例如,printf是用于在控制台上打印的库函数。库函数由编译器的设计者创建。所有C标准库函数都在扩展名为**.h**的不同头文件中定义。我们需要在程序中包含这些头文件,以利用在此类头文件中定义的库函数。例如,要使用诸如printf / scanf之类的库函数,我们需要在程序中包含stdio.h,这是一个头文件,其中包含有关标准输入/输出的所有库函数。

下表列出了最常用的头文件。

序号 头文件 描述
1 stdio.h 这是一个标准的输入/输出头文件。它包含有关标准输入/输出的所有库函数。
2 conio.h 这是一个控制台输入/输出头文件。
3 string.h 它包含所有与字符串相关的库函数,例如gets(),puts()等。
4 stdlib.h 该头文件包含所有通用库函数,例如malloc(),calloc(),exit()等。
5 math.h 该头文件包含所有与数学运算相关的函数,例如sqrt(),pow()等。
6 time.h 该头文件包含所有与时间有关的函数。
7 ctype.h 该头文件包含所有字符处理函数。
8 stdarg.h 变量参数函数在此头文件中定义。
9 signal.h 所有信号处理函数都在此头文件中定义。
10 setjmp.h 该文件包含所有跳转函数。
11 locale.h 该文件包含语言环境函数。
12 errno.h 该文件包含错误处理函数。
13 assert.h 该文件包含诊断函数。
相关推荐
FFDUST几秒前
C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)
c语言·c++·算法·leetcode
shiming88792 分钟前
C/C++链接数据库(MySQL)超级详细指南
c语言·数据库·c++
前端白袍2 分钟前
C语言:C语言实现对MySQL数据库表增删改查功能
c语言·数据库·mysql
Koishi_TvT33 分钟前
蓝桥杯c++算法秒杀【6】之动态规划【下】(数字三角形、砝码称重(背包问题)、括号序列、异或三角:::非常典型的必刷例题!!!)
c语言·c++·算法·性能优化·蓝桥杯·动态规划·c
孤独且没人爱的纸鹤33 分钟前
C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例
c语言·数据结构·c++·算法
Heris9937 分钟前
零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu
linux·c语言·开发语言·ubuntu
@曲终1 小时前
C语言学习 12(指针学习1)
c语言·经验分享·笔记·学习
军训猫猫头2 小时前
44.扫雷第二部分、放置随机的雷,扫雷,炸死或成功 C语言
c语言·开发语言
忘梓.2 小时前
C嘎嘎探索篇:栈与队列的交响:C++中的结构艺术
c语言·开发语言·c++·
f狐0狸x2 小时前
【数据结构实战篇】用C语言实现你的私有队列
c语言·数据结构·链表··队列