内容纲要

枚举

定义

格式:

enum 枚举名{枚举元素1,枚举元素2,。。。。。}

第一个枚举成员的默认值为整型的 0,也可以指定值,后续枚举成员的值在前一个成员上加 1。

枚举变量

格式:

  1. 先定义枚举类型在定义枚举变量
enum DAY{
    MON,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
};
enum DAY day;
  1. 定义枚举类型的同时定义枚举变量
enum DAY{
    MON,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
} day;
  1. 省略枚举名称,直接定义枚举变量
enum{
    MON,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
} day;
#include <stdio.h>

enum DAY{
    MON,
    TUE,
    WED,
    THU=4,
    FRI,
    SAT,
    SUN
};

int main()
{
    enum DAY day;
    day = SUN;
    printf("%d",day);
    return 0;
}

运行结果:

7

C 语言中,枚举类型是被当做int或者unsigned int类型来处理的,所以可以通过强制数据类型转换将整数转换为枚举。

函数

函数是C语言中最基本的模块,通过调用预先定义的库函数或者自定义的函数来完成特定功能。

定义

格式:

返回值类型标识符 函数名(形参列表){
    语句体;
    return 返回值;
}
  • 返回值类型由函数返回值的数据类型决定,无返回则为void
  • 函数之间有数据传送可根据传送的个数设定参数个数,无须数据传递则省略形参列表。

返回值:是指函数被调用后,执行函数体的结果进行返回给调用的变量,返回值的类型与定义的返回值类型应该一致。

函数声明

在主函数调用之前必须对函数进行声明,一般在函数顶部。

格式:

返回值类型 函数名(参数列表);

参数

  1. 形式参数:在定义函数时,若需要传值,需要预先定义的变量为形式参数。形参只有被调用时才分配内存单元,调用结束后释放所分配内存单元,只在函数内有效。
int sum(int a,int b);

其中a,b就是形式参数

  1. 实际参数:实参是进行函数调用时,传递給形参的值。实参的值应该与形参的类型保持一致,并且只能是实参向形参传值。
int c = sum(1,2);

其中1,2就属于实参,向形参传值。

传参

可变参数

在函数中调用可变数量的参数

定义:

返回值类型 函数名(int num/*可变参数个数*/,...){}
#include <stdio.h>
#include <stdarg.h>
//必须包含<stdarg.h>的头文件

int fun(int num, ...){
    int i,sum = 0;
    //num表示可变参数的数量, ...表示可变参数
    va_list valist;
    //在stdarg.h头文件中定义的可变参数列表
    va_start(valist,num);
    //为num个参数初始化
    for(i = 0;i < num;i++){
        sum += va_arg(valist,int);
        //访问每个可变参数并且赋值
    }
    //清理valist变量的内存
    va_end(valist);
    return sum;
}

int main()
{
    printf("%d",fun(2,2,3));
    return 0;
}

运行结果:

5

函数调用

格式:

函数名(参数列表);

例如:

int a = sqrt(9.0);

变量作用域

变量作用域是指从变量定义在内存中创建存储单元到从内存中销毁,变量的有效性范围。

局部变量

在函数或语句块内声明定义的变量为局部变量,保存在栈中,只有被函数调用时才分配变量的存储单元。

#include <stdio.h>

int main(){

    int a, b;
    a = 15;
    b = a++;
    printf("%d,%d", a, b);
    return 0;
}

局部变量被定义后,需要手动进行初始化。

全局变量

在所有函数外声明定义的变量是全局变量,存储在内存的全局存储区中,占用静态的存储单元。

#include <stdio.h>

int a, b;
int main(){

    a = 15;
    b = a++;
    printf("%d,%d", a, b);
    return 0;
}

全局变量被定义时,系统自动初始化变量。其中,整型和浮点型默认值为0,字符型默认值为\0,指针等构造类型为NULL

最后修改日期:2020年11月27日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。