C语言-学习之路-05

函数
函数分类

C语言程序都是从主函数main()开始执行的。从函数的定义角度看,函数可分为系统函数和用户定义函数。

  • 系统函数(库函数):这是由编译系统提供,用户不必自己定义这些函数,但可以直接使用。例如scanf()、printf()、sizeof()等。
  • 用户定义函数:由用户自行定义编写的函数。
函数的作用
  • 使用函数可以省去重复代码的编写,降低代码重复率。
  • 函数可以使程序更加模块化,有利于代码的阅读、迭代、完善。
    案例:
#include <stdint.h>
#include <time.h>
#include <stdlib.h>

int max(int a, int b)
{
    
    
	if (a > b)
	{
    
    
		return a;
	}
	else
	{
    
    
		return b;
	}

}

int main(void)
{
    
    
	int a1 = 10;
	int b1 = 12;
	int c1;
	c1 = max(a1, b1);
	printf("%d\n", c1);

	return 0;

}
函数的定义
函数定义格式

返回类型 函数名(形式参数列表)
{
数据定义部分;
执行语句部分;
}
在这里插入图片描述

函数名字、形参、函数体、返回值

函数名:见明知意即可,注意:函数名后面的(),代表这个是函数,不是普通的变量名。
形参列表:在定义函数时指定的形参,在未出现函数调用时,它们并不占内存中的存储单元,因此被称为形参,而且形参不能赋值。在定义函数时,形参必须指定类型和变量。
函数体:main()下的{}内的内容为函数体,主要为函数功能实现程序。
返回值:函数的返回值是通过return语句活动的,return后面的值也可以使用表达式代替。

函数调用
无参函数调用
#include <stdint.h>
#include <time.h>
#include <stdlib.h>

void test()
{
    
    
	printf("hello world!");
}

int main(void)
{
    
    
	test();
	return 0;

}
有参函数调用
#include <stdint.h>
#include <time.h>
#include <stdlib.h>

void test(int a, int b)
{
    
    
	printf("%d\n",a);
}

int main(void)
{
    
    
	int a = 10;
	int b = 11;
	test(a,b);
	return 0;

}

如果不确定函数返回值是什么类型时,可使用void作为返回值类型。

函数的声明

如果使用用户自己定义的函数,而该函数与调用它的函数(即主调函数)不在同一文件中,或者函数定义的位置在主调函数之后,则必须在调用此函数之前对被调用的函数作声明。
所谓函数声明,就是在函数尚在未定义的情况下,事先将该函数的有关信息通知编译系统,就相当于告诉编译器,函数在后面定义,以便使编译能正常进行。
注:一个函数只能被定义一次,但可以声明多次!

#include <stdint.h>
#include <time.h>
#include <stdlib.h>

int max(int x, int y); //函数的声明,分号不能省略

int main(void)
{
    
    
	int a = 10;
	int b = 11;
	int max_number = 0;
	max_number = max(a, b);
	printf("最大值为%d\n", max);
	return 0;

}

int max(int x, int y)
{
    
    
	return x > y ? x : y;
}

函数定义和声明的区别

  • 定义是指对函数功能的确立,包括指定函数名、函数类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
  • 声明的作用则是把函数的名字、函数类型以及形参的个数、类型和顺序,通知编译系统,以便在对包含函数调用的语句进行编译时,据此对其进行对照检查。
多文件(分文件)编程
分文件编程
  • 把函数声明放在头文件xxx.h中,在主函数中包含相应头文件。
  • 在头文件对应的xxx.c中实现xxx.h声明的函数。
    在这里插入图片描述
    在工程项目中,防止头文件重复包含,一般使用#ifndef或#pragma once方式。

猜你喜欢

转载自blog.csdn.net/weixin_50918736/article/details/130484223