• C语言基础语法复习06-c语言关键字


    ANSI标准定义的C语言关键字共32:
    void char int float double short long signed unsigned
    struct union enum typedef sizeof
    auto static register extern const volatile
    return continue break goto
    if else switch case default for do while
    C99新增关键字:_Bool _Complex _Imaginary inline restrict
    C11新增关键字:
    _Alignas _Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    数据类型5+3void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
    char:字符型类型数据,属于整型数据的一种
    int:整型数据,通常为编译器指定的机器字长
    float:单精度浮点型数据,属于浮点数据的一种
    double:双精度浮点型数据,属于浮点数据的一种
    _Bool:用于定义布尔类型变量,c99
    _Complex:用于定义复数类型变量,c99
    _Imaginary:用于定义虚数类型变量,c99
    类型修饰关键字(4个)
    short:修饰int,短整型数据,可省略被修饰的int
    long:修饰int,长整形数据,可省略被修饰的int
    signed:修饰整型数据,有符号数据类型
    unsigned:修饰整型数据,无符号数据类型
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    复杂类型关键字(5个)
    struct:结构体声明
    union:共用体声明
    enum:枚举声明
    typedef:声明类型别名
    sizeof:得到特定类型或特定类型变量的大小
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    存储级别关键字(6+1个)
    auto:指定为自动变量,由编译器自动分配及释放,通常在栈上分配
    static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
    register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
    extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的对象的一个“引用“
    const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
    volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值
    restrict:关键字用于告诉编译器,一个指针指向的内存空间是唯一的,没有其他指针指向同一块内存。c99
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    跳转结构(4个)
    return:用在函数体中,返回特定值(或者是void值,即不返回值)
    continue:结束当前循环,开始下一轮循环
    break:跳出当前循环或switch结构
    goto:无条件跳转语句
    分支结构(5个)
    if:条件语句
    else:条件语句否定分支(与if连用)
    switch:开关语句(多重分支语句)
    case:开关语句中的分支标记
    default:开关语句中的“其他”分治,可选
    循环结构(3个)
    forfor循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件
    dodo-while循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件
    whilewhile循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    inline c99
    C11新增关键字
    _Alignas:用于指定内存对齐方式
    _Alignof:用于获取类型的内存对齐方式
    _Atomic:用于定义原子类型变量,支持并发访问
    _Generic:用于根据参数类型选择不同的代码
    _Noreturn:用于告诉编译器函数不会返回
    _Static_assert:用于在编译时检查表达式的真假
    _Thread_local:用于定义线程局部变量,每个线程都有一份独立的副本
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
    右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
    
    • 1
    • 2
  • 相关阅读:
    云原生:深入掌握Docker日志管理:高效策略与最佳实践
    任务6 学生宿舍信息管理系统
    社区常态化防疫管理现状以及完善方法
    buuctf[极客大挑战 2019]Havefun 1
    【c++】stringstream基础:实现数据类型转换和字符串分割
    通过starrocks jdbc外表查询sqlserver
    前端埋点方式
    网络协议,OSI,简单通信,IP和mac地址
    如何在springboot项目中删除引用jar包中的无用bean
    经典CAN2.0 DBC快速切换为CANFD DBC
  • 原文地址:https://blog.csdn.net/weixin_43172531/article/details/132893176