zoukankan      html  css  js  c++  java
  • C/C++ 知识点---C语言关键字(32个)

    C/C++ 知识点

    1.C语言关键字(32个)

    <1>.基本数据类型 [5]

    void  :声明函数无返回值或无参数,声明空类型指针 

    char  :声明字符型变量

    int   :声明整形变量

    float  :声明浮点型变量

    double :声明双精度变量

    <2>.类型修饰关键字[4]

    shot  :声明短整型变量

    long  :声明双长整型变量

    signed   :声明有符号类型变量

    unsigned:声明无符号类型变量

    <3>.复杂类型关键字[4]

    struct  :声明结构体变量

    union   :声明联合数据类型

    enum   :声明枚举类型

    typedef  :用于数据类型取别名及其他用途

    sizeof    :计算对象所占内存空间大小

    <4>.存储级别关键字[6]

    auto  :声明自动变量,一般编译器默认为缺省时为auto,通常在栈上分配

    static   :声明静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部

    register  :声明寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数

    extern  :声明外部变量或引用,编译器遇到此变量和函数时在其他模块中寻找其定义

    const  :声明只读变量,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)

    volatile  :说明变量在程序执行中可被隐式改变,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值

    <5>.控制流关键字[13]

    ---跳转---

    return  :子程序返回语句

    continue :结束当前循环,开始下一轮循环

    break   :跳出当前循环

    goto    :无条件跳转语句

    ---分支---

    if    :条件语句

    else    :条件语句否定分支(与if连用)

    switch   :开关语句

    case   :开关语句分支

    default  :开关语句“其他”分支

    ---循环---

    for  :其中一种循环语句

    do  :循环语句的循环体

    while :循环语句的循环条件

    2.static关键字

    static关键字主要用于修饰局部静态变量、全局静态变量/函数,以及静态数据成员/成员函数(C++),主要起到生存期和作用域的限制作用及类中的唯一性;
    <1>.按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区;
    按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效;
    也就是说把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围;
    <2>.static函数在内存中只有一份,而普通函数在每个被调用中维持一份拷贝,函数前加static使得函数成为静态函数(内部函数),这时它的作用域仅局限于本文件;
    <3>.类的静态成员函数只能访问类的静态成员(变量或函数);静态数据成员则标识变量/函数在此类中的唯一性,对此而言,成员函数不管是否是static,在内存中只有一个副本,普通成员函数调用时,需要传入this指针,static成员函数调用时,没有this指针;

     3.extern关键字

    extern关键字置于变量或函数前,用于提示编译器该变量或者函数在其他文件中定义,另外用来进行链接指定(extern "C"),告诉链接器在链接时用C函数规范来链接,解决编译生成的目标代码中名字匹配问题;
    另外extern的使用要严格对应声明时的格式,例如源文件定义了数组类型char T[ARRAY_NUM],再另外的文件中如果声明用extern char *T,会导致非法内存访问错误,因为指向类型T的指针并不等价于类型T的数组,应该改为:extern char T[];

  • 相关阅读:
    show variables like "sql_mode"; set sql_mode=''; set sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';
    c#单元测试
    React HookApi
    React Navigation验证流程
    React Native 错误笔记
    React Navigation 5.x BottomTab 使用
    React Navigation 5.x 使用
    虹软人脸识别SDK接入Milvus实现海量人脸快速检索
    iOS逆向:越狱手机抹除数据、还原,cydia出错(2021.04.21 完结)
    C#教程1:类型和变量
  • 原文地址:https://www.cnblogs.com/sz-leez/p/4364376.html
Copyright © 2011-2022 走看看