zoukankan      html  css  js  c++  java
  • C语言总结的知识点

    什么是有效数字?
    -------------------------
    数据类型
    运算符:
    函数:
    
    程序结构:
    存储结构
    内存管理
    
    关键字:
    -------------------------
    
    C语言:
    我认为编程就是对数据操作
    
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx数据类型xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    基本数据类型:原子数据类型是最小数据单元:
      
    空类型:是所有数据类型的基础。   
    
    构造数据类型:在基本数据类型的基础上构造而成的复合数据类型。
    ############################
    基本数据类型:也称为原子数据:最小数据单元
    ############################
    整型变量
    种类:    short int  ,int ,long int
    长度:    32位机长度:2 4 4
    注意;    在嵌入式系统中为了兼顾可移植性和效率:
        将int的控制在unsigned int和 signed int的交集
    
    整型常量:
    开头:     以0和0x开头区分八进制和十六进制
    结尾:    为了显示的表达整型数据的类型,在结尾添加L和U分别表示长整型和无符号整型
    #####################
    浮点型变量
    种类:    float double long double
    长度:     4 8 8
    有效数字: 6  16 18
    
    浮点型常量
    表现形式:
    点分十进制:默认double类型
    指数形式: 尾数E指数  3E-3
    ########################
    字符型变量:
    种类:    char
    大小:  1
    内容:    字符对应的ASSIC值
    
    字符常量
    形式: 用单引号括起一个字符
    特殊:    特殊的字符串常量转移字符:
     	 \ '
    
    ###########################
    指针型
    指针常量:
    数组名:    int a[];a为地址常量;
    字符串常量:    char a[]=“asdf”;a为字符串常量;
    C语言中没有专门的字符串常量,利用字符串所在内存的首地址表示该字符串;
    
    
    指针变量:
    定义;    给每个内存单元对应一个编号,利用该编号可以快速方位该内存单元;
    大小:    编号就是指针:四字节,内存单元:1字节
    关于*int *p;        *是数据类型一部分
    int *p,q;    p是指针,q是整型变量
    *p:        指针解引用符
    关于二维:
    二维指针:    int **a;    保存变量类型一维指针的地址
    二维数组指针:    int (*a)[];    保存变量类型二维数组名
    二维指针数组:    int *a[];    是一个数组,元素类型为指针
    
    野指针:
    定义:    指针随机指向一块内存:
    原因:    指针变量未初始化
        指针已被释放
        指针被手动free
        指针访问越界
    ########################
    枚举型
    
    
    ####################
    空数据类型:
    NULL:常量值为0
    
    void *
    定义:    数据类型不确定的指针变量
    作用:    通过强转可以指向任意数据类型
    使用:    (void *)malloc(size):用于数据类型转换;
         fun(void *a):用于参数传递
        
    ####################
    构造数据类型
    ####################
    结构体和数组:
    结构体和数组型变量作为形参:
        分别是值传递和地址传递;
    ####################
    数组:
    定义:    具有一定关系的若干个变量集合
    种类:    数值数组,字符数组,指针数组,结构体数组
    格式:    数据类型 数组名 数组长度
            数组名:地址常量
            数组长度:常量
    注意:    防止数组访问越界;
    初始化:
    不初始化:
        局部数组不初始化,元素值不确定。
        static数组不初始化,默认值零
        全局变量不初始化,默认值零
    初始化:
        全部初始化:定义时初始化。int a[2]={1,2};
        部分初始化:初始值比数组长度小,自动赋零。int a[2]={1};
        赋值初始化:定义的时候无数组长度,int a[]={1,2};
    初始化零:
        直接赋值为零;int a[2]={0};
    
    字符数组和字符串:
    char a[]="asdfg";
        数组长度:字符个数加一,默认添加0
    char *a="asdfg";
        字符指针a指向一个字符串常量;
    
    字符串处理函数函数:
        赋值:strcpy(),
        比较:strcmp(),
        求长:strlen().
    ######################
    结构体:        
    特点:
        ①用户自行构造
        ②由不同基本数据类型构成
        ③定义时不分配空间,定义变量时才分配;
    使用:
        访问结构体变量的成员:
        结构体变量名.成员名
        结构体指针->成员名
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx运算符xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    原则:尽量使用括号,阅读更方便;
    优先级:大略分:四大天王() [] -> .
            单目
            双目
    例如:*p++和*++p;
        *p++;访问p指向的对象,p后移一位;
        *++p;访问p后移一位所指向的对象;
    数据类型转换:对数据类型进行临时转变,并不改变本身类型;
        自动:float-》double   char short-》int
        强制:(类型名)表达式
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx函数xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    编程的思想:高内聚,低耦合;
    格式:返回值类型 函数名 参数 函数体
    ==============
    函数声明:
    extern修饰:表示该函数定义在其他源文件中
    static修饰:表示该函数只能在本文件内使用
    ==============
    函数调用:
    ①函数语句
    ②函数表达式
    ③函数参数
    ==============
    返回值
    
    =============
    函数名:
    定义:    是函数指针,是一个函数的入口地址
    作用:    用于回调函数(信号注册函数,线程创建函数)
    回调函数三个特点:事件触发,自动运行,函数指针
    ==============
    参数:
    值传递:    形参和实参是两个变量
    地址传递:    通过地址可以访问同一块内存
    ==============
    被调函数向主调函数返回值得三种方式:
    1.返回值
    2.地址传递
    3.全局变量
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx程序结构xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    种类:        顺序结构,分支结构,循环结构
    分支结构:    if switch
    循环结构:    while for
    
    跳转语句:
        break:跳出循环
        continue:跳出本次循环;
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx内存管理xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    内存区间分类:栈区  堆区  全局变量及静态变量区/静态存储区   代码区
    malloc free
    ===============
    栈区:        此存储方式的变量的分配和释放都是自动进行的;
    堆区:        用于动态分配,在程序运行时分配空间 ,用malloc手动申请,手动free释放
    静态存储区:    内存在编译时分配好,程序结束才释放例如:全局变量,静态变量,字符串常量。
    代码区:    存放程序代码,只读
    ===============
    malloc和free:两个配对使用;
    malloc
    格式:    (void *)malloc(size);
    返回值:成功返回申请内存的首地址,失败返回NULL;
    free
    格式:    free(堆区指针)
    注意:    不能重复释放
    
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx存储模型xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    从不同的角度分析:生存周期,作用域,种类;
    ==========
    生存周期:
    静态存储:程序运行时就分配存储空间,运行结束才释放内存
    动态存储:程序运行时动态分布存储空间,使用完毕立即释放
    ==========
    作用域:
    局部变量;
    定义;定义在函数模块内部的变量,
    作用域;仅在函数模块内部有效
    运行周期:局部变量在函数模块进入堆栈式生成,在弹出堆栈时消亡。
    全局变量:
    定义:定义在所有函数模块之外;
    作用域:源文件
    使用:可以一次定义,多次声明,声明时加修饰符extern;
    ==========
    五种存储模型:1 auto 2 register 3 静态空链接 4 静态外部链接 5 静态内部链接 
    ==========
    auto(自动)
    局部变量默认是auto存储类型
    
    动态存储,作用域函数模块内部,空连接,无默认初始化
    ===========
    register(寄存器)
    
    动态存储,作用域函数模块内部,空连接,无默认初始化
    保存在cpu的寄存器中,则变量不能使用取地址符,不能修饰全局变量,长度不大于整型长度。
    ===========
    静态 空连接
    
    static修饰局部变量:静态存储,作用域函数模块内部,空连接,默认初始化零
    ===========
    静态 内部链接
    
    static修饰全局变量:静态存储,作用域函数本文件,内部连接,默认初始化零
    ===========
    静态 外部链接
    
    全局变量:静态存储,作用域源文件 外部链接,默认初始化零
    
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx关键字xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ypedef define const
    
    typedef:为变量类型取一个易记且意义明确的名字
    typedef unsigned long uint32
    ==========
    define:
    预处理指令,实际就是符号替换。
    ==========
    const;定义常变量
    const int a;定义常量a
    const int *a;定义*a为常量
    int *const a;定义指针常量a
    ==========
    头文件防止重复包含
  • 相关阅读:
    Redis接口限流
    CentOS7以下DNS失效问题
    Vue的安装与使用
    使用 REDIS保存SESSION信息
    ThinkPHP 阿里云图片上传
    Laravel6.0+easywechat4.1获取用户授权例子与分享示例
    1.oracle创建本地数据库步骤及导入数据
    16、React Native实战之TextInput组件
    14.React Native实战之Navigator组件初探
    13.React Native实战之Text组件
  • 原文地址:https://www.cnblogs.com/lanbofei/p/9882048.html
Copyright © 2011-2022 走看看