江
江小南
V1
2023/01/12阅读:16主题:萌绿
【C语言】函数与变量
阅读本文,需要对C语言的基础知识有所了解。C语言基础,我给大家准备了详细的学习资料,微信公众号主页回复“C语言”即可领取。
1. 函数间的调用关系
由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意次。

2. 函数的声明与定义
函数的基本结构:
返回类型 函数名(形参类型1 形参名1,形参类型2 形参名2...){
函数体
}
示例:
// 函数的声明
int print_star(int i);
// 函数的定义
int print_star(int i){
i=i+3;
return i;
}
完整代码示例:
#include <stdio.h>
// 函数的声明
int print_star(int i);
int main() {
int a=10;
a=print_star(a);
printf("print_star a=%d\n",a);
return 0;
}
// 函数的定义
int print_star(int i){
i=i+3;
return i;
}
F:\Computer\Project\practice\23\23.1-function\cmake-build-debug\23_1_function.exe
print_star a=13
进程已结束,退出代码为 0
说明:在示例中将函数的声明与定义分开来写,那么函数的声明必须放在main函数之前,而函数的定义可以放在任意位置。如果不单独写函数的声明,那么函数的定义必须放在main函数之前,相当于同时进行声明与定义,否则编译报错,但能执行出结果。

函数的声明与定义的差异:
-
函数声明的作用是把函数的名字、函数类型及形参的类型、个数和顺序通知编译系统,以便在调用该函数时编译系统能正确识别函数并检查调用是否合法。 -
函数的定义是指对函数功能的确立,包括指定函数名、函数值类型、形参及其类型、函数体等。它是一个完整的,独立的函数单位。
隐式声明:函数如果不显示地声明返回类型,那么它默认返回整型。一般都需要显示声明。
3. 函数的分类
函数分为两种类型:
-
标准函数:即库函数,这是由系统提供的,用户不必自己定义的函数,可以直接使用他们。如printf函数,scanf函数。 -
自定义的函数:用以解决用户的专门需要。分为无参函数和有参函数。
4. 形参-实参
在不同函数之间传递数据时,可以使用的方法如下:
-
参数:通过形式参数和实际参数。 -
返回值:用return语句返回结果。 -
全局变量:外部变量。
形参与实参的一些说明:
-
定义函数中指定的形参,如果没有函数调用,那么他们并不占用内存中的存储单元,只有在发生函数调用时,形参才会被分配内存单元。调用结束后,形参所占的内存单元会被释放。 -
实参可以是常量,变量或者表达式,但要求他们有确定的值。 -
形参可以有多个,使用逗号隔开。同时指定形参的类型。 -
实参与形参的个数相等,类型相匹配,且实参与形参按照顺序对应,一一传递。 -
实参向形参数据传递是单向“值传递”,只能由实参传给形参。 -
形参相当于局部变量,因此不能在定义局部变量与参数同名。
C语言一般要求把程序中的函数做成一个封闭体,除可以通过“实参->形参”的渠道与外界发生联系外,没有其他渠道。
5. 全局变量与局部变量
全局变量
函数之外定义的变量称为外部变量。外部变量可以为文件中的其他函数共用,它的有效范围是从定义变量的位置开始到本源文件结束,所以也称全程(全局)变量。

全局变量存储在数据段,所以main函数和print函数都是可见的。全局变量不会因为某个函数执行结束而消失,在整个进程的执行过程中是始终有效。工作中应尽量避免使用全局变量。
如果局部变量和全局变量重名,那么将采取就近原则,即实际获取和修改的值是局部变量的值。
全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟存储单元。
局部变量
在一个函数内部定义的变量称为内部变量。它只在本函数范围内有效,即只有在本函数内才能使用这些变量,也称局部变量。
通俗来说就是局部变量的有效范围是离自己最近的花括号。
作者介绍
江
江小南
V1