嵌入式从入门到精通(入土)——超详细知识点分享1

Linux C从入门到精通(入土)

  1. 简单认识Linux及其常见的操作命令
    1.1 Linux的特点
    开源的、软硬件可裁剪、多用户、多任务、分时操作系统。
    1.2 嵌入式系统
    以计算机应用为中心,软硬件可裁剪的专用计算机系统。对体积、功耗、性能有一定要求。
    1.3 Linux基本操作命令
    1. 查看文件 ls:列出当前路径下的文件
    Ls-i:查看文件的inode号;ls-a:列出当前路径下的所有文件;
    Ls-lh:查看文件的详细信息,文件大小带单位;
    Ls-l:查看文件的详细信息。
    2. 文件的类型:bcd-lsb
    b:块设备文件;c:字符设备文件;d:文件夹;-:普通文件;
    l:链接文件;s:套接字文件;b管道文件。
    3. 改变路径 cd 目录名:切换到指定目录下
    Cd :切换到用户主目录;cd/home/hq:切换到用户主目录;
    Cd ~:切换到用户主目录;
    Cd/:切换到根目录;cd -:切换到上一次操作的路径;
    Cd.:切换到当前路径;cd…:切换到上一级目录。
    4. 创建文件及文件夹
    1. 创建目录文件 mkdir :创建一个目录文件
    Mkdir -p 目录1/目录2/目录3……创建多级目录
    2. 创建普通文件 touch 文件名(需要指定后缀):创建普通文件
    touch 文件1 文件3 文件3……创建多个普通文件。
    5. 删除文件 rm 文件名 :删除一个普通文件
    Rm 目录名 -p:删除目录文件。
    6. 复制 cp
    Cp 文件名 新文件名:将文件在当前路径下复制一份;
    Cp 文件名 路径 :将文件复制到指定路径下
    注:若复制的时文件夹需要加 -r选项。
    7. 移动或重命名 mv
    Mv 文件名 路径:将文件移动到指定的路径下;
    Mv 文件名 新文件名:将文件重命名。
    注:mv对文件夹的操作不需要加 -r。
    8. 常用快捷方式
    1. 清屏:ctrl+‘l’ ;clear清屏命令。
    2. 自动补全:tab键;
    3. 打开终端、退出终端
    Ctrl+shift+‘n’ :打开一个同路径的终端;
    Ctrl+alt+‘t’ :打开一个以主目录为路径的新终端;
    Ctrl+‘d’ :关闭终端;
    Exit命令也可以退出终端。
    9. Vi编辑器 gedit
    1. gedit:gedit 文件名 以记事本方式打开文件
    2. vi(vim)vi(vim)文件名 进入命令行模式
    三种模式:命令行模式、编辑模式、底行模式
    Vi打开文件进入的就是命令行模式;
    命令行模式下用i/a/o进入编辑模式;
    底行模式下用shift+:可以进入底行模式;
    编辑模式下,用esc进入退出到命令行模式,在shift+:切换到底行模式。
    命令行模式:复制、粘贴、剪切、删除、光标移动。
    yy:复制一行;nyy:复制n行;
    dd:删除或剪切一行;ndd:删除或剪切n行;
    p:粘贴;u:撤销; ctrl+‘r’:反撤销;
    gg:光标定位文件开头;G:光标定位最后一行开头。
    编辑模式:i/I a/A o/O进入编辑模式。
    底行模式:保存、退出、替换、复制
    保存 :w ;退出 :q; 保存并退出 :wq、:x;
    强制退出:!q;文件另存:w 文件名;分屏:vsp;
    保存退出所有分屏:wqa;
    复制第n行到第m行的内容:n,my;
    删除第n行到第m行的内容:n,md;
    定位到第n行:n;高亮显示:/world;去除高亮:noh;
    将文件中所有的world1替换成world2:%s/world/world/g
    %:全文;s:替换所有;g:一行中所有。

  2. C语言基础1

  3. 计算机数据的表示 数值型、非数值型

  4. 数值型:十进制、八进制、十六进制、二进制
    十进制转二进制:除2倒取余,8421法则;
    二进制转十进制:基数*2^权;
    八进制转二进制:一个八进制等于三个二进制位;
    二进制转八进制:三个二进制等于一个八进制位;
    十六进制转二进制:一个十六进制等于四个二进制位;
    二进制转十六进制:四个二进制位等于一个十六进制位。

  5. 非数值型数据 运算符、标点符号、字母、ASCII码
    单引号引起来的是字符。
    常见的字符及其对应的ASCII码
    ‘\0’——0 ‘\n’——10 换行符
    ‘ ’——32 空格 ‘0’——48
    ‘9’——57 ‘A’——65 ‘Z’——90
    ‘a’——97 ‘z’——122
    ‘0’和0的区别:‘0’-48=0;
    ‘A’和‘a’的关系:‘A’+32=‘a’。

  6. 32个关键字

  7. 存储类型:决定变量存放的存放位置
    Auto:自动型 static:静态型
    Extern:外部引用型 register:寄存器

  8. 数据类型:决定变量所占的空间大小
    Char(字符型1)、int(整型4)、short(短整型2)、long(长整型4)、float(单精度浮点型4)、double(双精度浮点型8)、signed(有符号)、unsigned(无符号)。

  9. 控制语句
    If、else、switch、case、break、default、for、while、do、goto(跳转)、continue、return。

  10. 构造数据类型
    Struct(结构体)、union(共用体)、enum(枚举)。

  11. 杂项
    Const 常量化、sizeof()计算数据所占的空间大小、typedf重定义、void 空、修饰指针、不能修饰变量、作为函数的返回值、作为函数的参数、volatile防止被编译器优化。

  12. 标识符
    用来给变量、重定义、宏定义、函数、指针变量等起变量名、重定义名、函数名、指针变量名的。
    标识符的定义规则:

  13. 由字母、下划线、数字构成。

  14. 第一个字符不能是数字。

  15. 标识符不能和关键字相同。

  16. 见名知意

  17. C语言基础2

  18. 常量和变量
    变量:再程序运行过程中会发生变化的量。
    定义格式:【存储类型】 数据类型 变量名;
    存储类型:auto、stati、extern、register;
    数据类型:char、short、int、long、float、double;
    变量名:遵循标识符定义。
    局部变量:定义在函数体内的变量,默认存储类型位auto。定义时未初始化,初始值位随机值。存放在栈区。
    作用域:函数体内;
    生命周期:函数调用结束,空间释放。
    全局变量:定义在函数体外,定义时未初始化,初始值为0,存放在静态区的。Bss段。定义时初始化,且初始值不为0,存放在静态区的。Data段。
    作用域:整个任务中;
    生命周期:任务运行结束,空间释放。
    注:当全局变量和局部变量名相同时,函数中用的局部变量。
    常量
    整型常量、浮点常量、指数常量、字符常量、字符串常量、标识常量。

  19. 分隔符
    空格符space、制表符tab、换行符‘\n’、注释符://注释一行,/**/注释一段。

  20. 标点符号
    逗号、分号、圆括号、花括号、冒号。
    逗号运算符:只取最后一个逗号之后的运算结果,逗号之前的式子会进行运算。

  21. 一个任务(进程)的内存分配 32位操作系统
    一个进程开辟0-4G的虚拟内存空间,0-3G属于进程私有空间,3-4G属于所有进程公共的空间(内核空间)。

  22. 存储类型

  23. auto自动型
    只能修饰局部变量,可省略不写。特点和局部变量相同。

  24. static静态型
    a) 2.1 static修饰变量:延长生命周期,限定作用域
    b) 2.2 static 修饰局部变量:只需要初始化一次,再次调用,变量是上一次运行的结果。
    c) 2.3 static修饰全局变量:定义在函数体外、跟进程共存亡、在本文件中起作用。
    d) 2.4 static修饰函数:函数被限定在本文件中,只能在本文件中定义和使用。

  25. extern外部引用
    a) 外部引用的是全局变量。
    b) 外部引用其他文件的全局变量时,需要两个文件同时编译。
    c) Static修饰的变量不能外部引用。

  26. register寄存器类型
    register修饰变量,申请不到寄存器,将默认以auto型的变量使用。

  27. 数据类型:决定了变量在内存中占的空间大小
    a) 整数类型 用sizeof计算所占的空间大小
    类型名称 所占空间大小 值域范围
    Short短整型 2字节 -215–215-1
    Unsigned short 2字节 0—2^16-1
    Int整型 4字节 -231—231-1
    Unsigned int 4字节 0—2^32-1
    Long长整型 4字节 -231—231-1
    Unsigned long 4字节 0—2^32-1

b) 字符类型
Char字符类型 1字节 -27—27-1
Unsigned char 1字节 0—2^8-1

c) 浮点类型
Float单精度浮点型 4字节 保留6-7位有效数字
Double双精度浮点型 8字节 保留15-16位有效数字
注意:1.只有有符号类型,没有无符号类型
2.这里的有效数字指的是整数和小数部分的总和。
d) 逻辑类型

  1. 只有两个量true和false,表示逻辑真值和逻辑假值(非0为真)。

  2. Bool类型用作逻辑判断,bool取值false和true,是0和1的区别;false可以代表0,但true有很多种,并非只有1。
    e) 空类型
    Void经常用来修饰函数返回值和指针的数据类型,没有办法直接定义出来空类型变量。

  3. 输入输出函数
    函数三要素:功能、参数、返回值。

  4. printf
    功能:以指定格式向终端输出内容;
    参数:format:输出内容及对应格式
    返回值:输出字符的个数。

  5. scanf
    功能:以指定格式从终端获取数据;
    参数:format:输出内容及对应格式;
    返回值:成功返回正确匹配变量的个数。

  6. getchar
    功能:从终端获取一个字符;
    参数:无;
    返回值:成功获取字符的ASCII值。

  7. putchar
    功能:向终端输出一个字符;
    参数:输出的字符(也可以是单引号引起来的字符,也可以是ASCII)
    返回值:成功返回输出字符的ASCII值。

  8. 垃圾字符的回收

  9. 用空格回收;

  10. 用%*c回收,*抑制字符;

  11. 用getchar拿走一个字符。

  12. C语言基础3(控制语句)

  13. if条件语句 if……else
    a) 基本格式1:
    If(表达式1)
    {
    代码段1;
    }else
    {
    代码段2;
    }
    执行顺序:先判断表达式1是否成立,成立执行代码段1,不成立执行else对应的代码段2。
    注:0.if…else可以只有if。但是有else一定要有对应的if语句。

  14. if……else没有大大括号只能匹配一句代码。

  15. if和else之间不能有间隔语句。
    b) 格式2:
    If(表达式1)
    {
    If(表达式2)
    {代码段1;}
    Else
    {代码段2:}
    }
    Else
    {
    If(表达式3)
    {代码段3;}
    Else
    {代码段4:}
    }
    注:内层if语句判断执行的前提是外层if判断条件成立。
    c) 格式3:
    If(表达式1)
    {
    代码段1;
    }
    Else if(表达式2)
    {
    代码段2;
    }
    Else if(表达式3)
    {
    代码段3;
    }
    ……
    Else
    {
    代码段n;
    }
    注:

  16. 多个表达式判断,进入main函数从上往下执行,满足其中一个条件,执行对应的代码段后,后边的条件不再判断。

  17. 有else if,也必须有对应的if。可以没有else语句。

  18. switch开关语句
    格式:
    Switch(表达式)
    {
    Case 常量1(也可以是单引号引起来的字符):
    代码块1;
    Break;
    Case 常量2:
    代码块2:
    Break;
    …………
    Default:
    代码块n:
    Break;
    }
    注:

  19. 表达式计算的结果需要得到一个确切的值,值不能是小数。

  20. Case后的常量不能是小数和字符串常量。

  21. 每个case对应的代码执行结束后需要加break语句,不加会继续执行下一个case语句,直到遇到break结束。

你可能感兴趣的:(嵌入式,linux,bash,服务器,c#)