江小南

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函数之前,相当于同时进行声明与定义,否则编译报错,但能执行出结果。

函数的声明与定义的差异:

  1. 函数声明的作用是把函数的名字、函数类型及形参的类型、个数和顺序通知编译系统,以便在调用该函数时编译系统能正确识别函数并检查调用是否合法。
  2. 函数的定义是指对函数功能的确立,包括指定函数名、函数值类型、形参及其类型、函数体等。它是一个完整的,独立的函数单位。

隐式声明:函数如果不显示地声明返回类型,那么它默认返回整型。一般都需要显示声明。

3. 函数的分类

函数分为两种类型:

  1. 标准函数:即库函数,这是由系统提供的,用户不必自己定义的函数,可以直接使用他们。如printf函数,scanf函数。
  2. 自定义的函数:用以解决用户的专门需要。分为无参函数和有参函数。

4. 形参-实参

在不同函数之间传递数据时,可以使用的方法如下:

  1. 参数:通过形式参数和实际参数。
  2. 返回值:用return语句返回结果。
  3. 全局变量:外部变量。

形参与实参的一些说明:

  1. 定义函数中指定的形参,如果没有函数调用,那么他们并不占用内存中的存储单元,只有在发生函数调用时,形参才会被分配内存单元。调用结束后,形参所占的内存单元会被释放。
  2. 实参可以是常量,变量或者表达式,但要求他们有确定的值。
  3. 形参可以有多个,使用逗号隔开。同时指定形参的类型。
  4. 实参与形参的个数相等,类型相匹配,且实参与形参按照顺序对应,一一传递。
  5. 实参向形参数据传递是单向“值传递”,只能由实参传给形参。
  6. 形参相当于局部变量,因此不能在定义局部变量与参数同名。

C语言一般要求把程序中的函数做成一个封闭体,除可以通过“实参->形参”的渠道与外界发生联系外,没有其他渠道

5. 全局变量与局部变量

全局变量

函数之外定义的变量称为外部变量。外部变量可以为文件中的其他函数共用,它的有效范围是从定义变量的位置开始到本源文件结束,所以也称全程(全局)变量。

全局变量存储在数据段,所以main函数和print函数都是可见的。全局变量不会因为某个函数执行结束而消失,在整个进程的执行过程中是始终有效。工作中应尽量避免使用全局变量

如果局部变量和全局变量重名,那么将采取就近原则,即实际获取和修改的值是局部变量的值

全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟存储单元

局部变量

在一个函数内部定义的变量称为内部变量。它只在本函数范围内有效,即只有在本函数内才能使用这些变量,也称局部变量。

通俗来说就是局部变量的有效范围是离自己最近的花括号

分类:

后端

标签:

C++

作者介绍

江小南
V1