C语言总结

C语言

 

  • 数据类型
    • 常量与变量
      • 常量
        • 宏定义常量
          • #define <名字> <值>
            • #difine PI 3.14159
          • #define .......\  

                               ........

          • 可定义无值的宏
          • 预定义宏
          • 像函数的宏
            • #define cube(x) (x)*(x)*(x)
            • 整个值要括号,每个参数都要括号
            • 拓展
            • nline
        • #    ##  定义
        • const修饰
          • const int N = 10000000
          • 字符常量
          • 静态本地变量
            • static
            • 函数内局部作用域(本地可访问)
          • 特殊的全局变量
    • 变量
      • 储存于一个空间内,可以被改变的量
      • 变量使用前必须初始化
      • 全局变量与局部变量
      • 全局变量
        • extend
        • 放头文件中声明
    • 类型
      • 整数型
        • int
          • 只能存储整数,向下取整
      • 浮点数
        • double
          • 双精度浮点数
        • float
          • 单精度浮点数
        • 精度
          • float 有效数位7
          • double 有效数位15
          • 浮点数误差
            • 离散型数据
          • inf   nan
        • 科学计数法
      • 字符型
        • char
          • 只能存储单个字符
    • 存储数据的本质
      • 0   1  构成的数据存储大厦
      • ASCII
        • 字符其本质是 0  1,区别数字1和字符'1',计算机内所有东西的存储方式都是 0  1,字符可以和数字进行运算
      • Byte  B   KB  MB  GB   TB
        • 1024
      • 不同数据的本质
      • 关于负数
        • 补码
          • -5对应带符号位负数5(10000101)→除符号位外所有位取反(11111010)→加00000001(11111011)所以-5的补码是11111011。
    • 数据大小
      • sizeof()
  • 运算符、表达式
    • 运算符
      • 数学运算符
        • +   -     *     /      %    =
      • 逻辑运算符
        •    &&      ||   ... ? ... : ...
      • 关系运算符
        • >    <    >=   <=   ==   !=    
      • 复合运算符
        • +=     -=     *=      /=   %=   ++     --
      • 特殊字符
        • 格式控制字符
          • %d  %c  %f  %lf  %s  %u  %e  %lE  %lld  %p %#p %o %x %g
        • 注释
          • //   /*....*/
        • 转义(逃逸)字符
          • \n   \t  \b   \r     printf("你是真的/"狗/"");
      • 指针字符
        • &
          • 取地址
        • *
          • 取内容
      • 位运算字符
        • >>  << | ^ ~ &
          • >>
            • 左移,二进制数全部向左移动一位,移动后的最右边的空位用0补,相当与数值乘以二,移动n位就是n次幂
          • <<
            • 右移,二进制数全部向右移动一位,符号位不动,左边留下的空位用0补齐,相当于数值除以二
          • |
            • 有一位位1结果位1,否则位0
            • 按位或,可以拼接两个数,可以使某一位或某些位位1
          • &
            • 两位都是1结果为1,否则为0
            • 按位与,可以用来取数中的某一段,可以让某一位或某些位为0
          • ~
            • 0变1     把1变0
            • 按位取反
          • ^
            • 两位相同则结果位0,否则为1
            • 按位异或,一个数被异或两次就相当于什么都没做
      • 编译预处理指令
        • #
          • 编译预处理不属于C语言的语句,所以不需要';'
          • #include <>
            • 插入文件内容
              • 标准库空<>
              • 自己写的头文件用“”
    • 表达式
      • 单个表达式
      • 集合表达式
      • if else 还有 循环 等后面只能跟一个表达式或者多个表达式的集合
  • 输入输出
    • 输出
      • Hello world!
        • 基本格式:printf("输出语句",格式控制对应的量);
          • 每一个%所控制的数据类型会与 ',' 后面的量一一对应,按照每种变量自己的方式读取并输出
          • 输出语句中除了'%'与'\'控制的特殊字符会变换输出,其它任何东西都会按照原样输出
          • 返回值输出字符数
    • 输入
      • 数据输入方式
        • 基本格式:scanf("%...", &...);
          • 输入函数的双引号内是我们必须输入的东西(包括空格逗号等所有字符),除非题目特殊要求,否则不要多添加任何东西
          • scanf()给函数赋值时,是将用户输入的值,交到某个内存地址里存储
          • 缓冲区问题
            • %c 与%s 【gets()等与输入字符相关的都要注意】会直接从缓冲区读取字符不会判断该字符是否可读,%d%lf等会判断数据是否符合读入要求,因此当我们使用%c%s时我不知道缓冲区内是否存在不要的字符时为了避免出错,我们可以在s和c前面加一个'space'(空格)(如:' %c'),或者在scanf()前加一个getchar(),也可以用setbuf(stdin, NULL)清空缓冲区。
          • 返回值读入变量数
    • 变量的输入与输出
      • 整型
        • %d
          • 十进制整数
      • 字符
        • %c
          • ASCII码表中的字符
      • 浮点数
        • %f  %lf
          • %f单精度浮点数
          • %lf双精度浮点数
    • 控制输出域
      • %+-0m.nlf
        • 默认左对齐,加上 - 右对齐
        • m域宽,代表输出数据最小所占空间数,一个字符一个空间,不足用空格补齐
        • .n 是代表精度,保留几位小数
        • 0  表示域宽内数字前的空格用0补齐
        • + 数值前强制填充一个加号
      • %*d
        • printf("%*d",6,10);  == printf("%6d",10);
      • %[flags][width][.prec][hlL]type
    • 数据类型转换
      • 两种数据类型运算时,转换为字节较大的数据类型
      • 强制转换
        • (类型)数据
  • 头文件
    • #include <stdio.h>
      • printf()
        • 输入
      • scanf()
        • 输出
      • 字符输入输出处理函数
    • #include <string.h>
      • strlen()
        • 字符串长度
      • strcp()
        • 字符串复制
      • memset()
        • 字符串初始化
      • strcat()
        • 字符串拼接
      • strcmp()
        • 字符串比较
    • #include <math.h>
      • pow()
        • 次方
      • sqrt()
        • 根号
    • #include <stdlib.h>
      • malloc()
        • 内存申请
    • 头文件内,只能放声明
    • 标准头文件结构

      #ifdefine ....

      #define.....

      ......

      #endif

  • 选择
    • if
      • 执行条件 —— 运算结果
        • 0即1,0为false1为true
    • if else
      • if else 嵌套
    • switch
      • case break default
  • 循环
    • while
      • while(0/1){        ……}
    • do while
      • do{      ……} while(0/1)
    • for
      • for(变量初始化  ;   循环条件  ;   循环结束变量处理){        ……}
    • 循环控制关键字
      • break
        • 终止循环
      • continue
        • 结束本次循环
      • goto
        • 强制跳转(基本不用)
    • 循环嵌套
  • 数组
    • 连续空间内储存相同类型数据
    • 定义方式
      • 类型 名字[大小]
    • 初始化
      • arr[]={1,2,3,4,5,6,7,8,9};循环遍历赋值直接赋值
      • 数组角标从0开始
    • 字符数组
      • char 型数组模拟字符串
      • 字符串
        • '\0' 结尾的字符数组,由于最后要用结束符,通常要将字符数组开得更大
        • 字符串函数
        • 字符输出与输入
          • 输入
            • getchar()
            • gets()
            • fgets()
          • 输出
            • putchar()
            • puts()
      • 二维数组、高维数组
        • arr[ ][ ][ ][ ][ ]……
        • 初始化方式
          • 直接初始化
            • arr[] = {{............}{............} …………}
          • 多重循环初始化
    • 排序
      • 冒泡排序
        • 双重循环+交换
      • 桶排序
        • 制表
      • sort/qsort
  • 函数
    • 模块化程序的工具
    • 函数类型
      • 与数据类型相同
      • 函数类型即是返回值类型
    • 函数参数
      • 形参与实参
        • 函数执行时新开辟的变量,接收实参的数值,进行函数内的运算
        • 实参,主函数内的变量的值
      • 指针传参
        • 传入地址,直接对实参进行操作
    • 自定义函数——头文件函数
    • 函数递归
      • 设置递归结束条件
      • 本函数内调用本函数
  • 指针(灵魂)
    • 运算符
      • &取地址
      • *取内容
        • 访问指针所指的变量
    • 指针 == 地址
    • 解决函数多个返回值的问题
    • 指针使用之前必须赋值
    • 数组变量是特殊的指针
      • 数组名 == 数组首地址
      • 数组名相当于是一个常量指针,所以数组之间不可以被赋值
      • *(p+n) == arr[n]
    • 指针加减以单元长度进行,一个的单元为1
    • 0地址
      • 常用于初始化,做返回值
      • NULL
  • 结构体
    • struct
    • 结构体内可以放很多种类型的数据,当我们定义一个变量时,此变量就具有结构体的定义的多种类型,我们通过'.'访问
    • struct  Node{       int a;        double b;        char c;        struct code;};
    • 结构体数组
      • 结构体也可以用来定义数组,其性质和普通数组相同
posted @ 2021-01-24 16:42  Kirk~~  阅读(73)  评论(0编辑  收藏  举报