Bootstrap

小白Linux-C语言入门1-3总结

  • 入门1-3总结
    • 一、Linux命令
      • 1.基本知识
        • 根目录: /
        • 家目录: /home/hq   ~
        • hq                     用户名      whoami                                                                 
        • @                     间隔符
        • ubuntu              主机名      hostname                                                             
        • :                     间隔符 
        • :和$中间位置:   当前路径   pwd                                                                     
        • $                        输入提示符 
        • 默认在家目录    /home/hq                       
        • 绝对路径:从根目录开始逐级向下     /home/hq/a/b/c
        • 相对路径:以当前位置为参照找上一级或下一级     a/b/c
        • $ : 普通用户
        • #: 超级用户  root
      • 2.新建
        • mkdir   文件夹名: 创建文件夹
        • touch   文件:        创建普通文件(带后缀名)       
        • 连级创建:mkdir -p 需要创建的路径
        • 同时新建多个文件夹:mkdir a b c 名字中间空格隔开
        • 同时新建多个文件:touch file1.c file2.c
        • 多层嵌套:mkdir -p 122/123/124
        • 相同路径下,不能创建同名文件夹,会报错。
      • 3查看
        • ls:     显示当前路径下的文件
        • ls -l: 显示当前路径下文件的详细信息
        • ls -a:   显示当前路径下的所有文件,包含隐藏文件.         
        • ls -al:显示当前路径下所有文件包含隐藏文件的详细信息
          • 通过颜色区分文件类型
          • 蓝色:文件夹
          • 白色:普通文件                         
          • 绿色:可执行文件
        • 文件类型   7种   bcd-lsp
          • b  块设备文件           /dev
          • c  字符设备文件        键盘,鼠标 /dev/input
          • d  目录文件              文件夹
          • -  普通文件               .c .h .txt
          • l   软链接文件          <LinuxC高级>
          • s  套接字文件          <网络编程>
          • p  管道文件             <IO>
        • 文件权限
          • rwx :可读可写可执行     r-- :可读不可写不可执行(只读)
          • rwx   rwx   rwx 自己  组内  其他
          • r:4    w:2  x:1    -:0
          • rwx:7   r-x:5
          • 修改权限:chmod  777  文件、文件夹
          • 显示内容:
          • -rw-rw-r-- 1 hq hq 0 Dec 23 17:53 1.txt
          • 第一列:当前文件的类型以及权限                                     
          • 第二列:连接数 (当前文件中包含几个文件夹)                   
          • 第三列:用户名                                                                 
          • 第四列:组名                                                                   
          • 第五列:文件大小 字节                                                     
          • 第六 七 八列:最后修改的时间 最后一列:文件名
      • 4.路径切换
        • cd 路径:切换到当前目录下的一个路径
        • cd :直接切换到家目录
        • cd ~:切换到家目录
        • cd .. :切换到上一级目录
        • cd . :在当前目录下切换,没有效果的   
        • . :当前路径
        • ..:上一级目录
        • cd / :切换到根目录
      • 5.快捷键
        • ctrl+shift+'+':终端窗口放大
        • ctrl+'-':缩小
        • ctrl+'l':清屏
        • tab:自动补全                                                                                         
        • 切换中英文:ctrl + 空格                                                                         
        • 终止程序:ctrl + ‘c’
        • 上下键:可以查找之前敲过的命令
        • 在代码中输入main,按下tab键,自动补全main函数
        • ctrl+'/':单行注释代码    ctrl + 'shift'+'a':多行注释代码
      • 6.删除
        • rm    普通文件:删除文件
        • rm -r  文件夹:删除文件夹
      • 7.复制
        • cp 文件名 路径:复制文件
        • cp 文件夹 路径 -r :复制文件夹
      • 8.移动 重命名 改名
        • 移动:mv 文件/文件夹  路径:移动文件或文件夹 
        • 重命名: mv 旧名称 新名称                                   
        • 移动时改名:mv 旧名称 路径 / 新名称
    • 二、编译
      • 1.编程语言的发展历程
        • 机器语言:01010101010
        • 汇编语言:二进制的文本形式
        • 高级语言:C语言 java c++(计算机不能直接看懂)
      • 2.vi编辑器
        • 打开:vi  文件名
        • 三种模式
          • 命令行模式:此模式下只能进行一些特定指令的操作,默认进入此模式
          • 插入模式(编辑模式):可以编写内容
          • 底行模式:进行一些特定指令的操作(退出)
        • 模式之间的切换
          • 命令行模式 ---a/i/o--> 插入模式 ---esc--> 命令行模式
          • 命令行模式 ---shift+:/ 空格----> 底行模式
        • 命令行
          • 复制:yy 多行 nyy(n:表示的是行数)
          • 删除(剪切):dd ndd
          • 粘贴:p
          • 撤销:u
          • 反撤:ctrl+r
          • 光标的移动:移动到首行:gg 移动到末行:G 移动到行首:0 移动到行尾:$
          • 整理代码的格式:gg=G
        • 底行模式
          • 指定行的复制:5,10y
          • 指定行的删除:5,10d
          • 保存:w
          • 退出:q
          • 保存并退出:wq
          • 暂时退出:!
          • 查找:/str
          • 替换: s/str1/str2 将光标所在行的第一个str1替换成str2
          • 全文替换:%s/str1/str2 /g
          • 设置行号:set nu
          • 取消行号:set nonu
          • 取消高亮:nohl
      • 3.简单的编辑流程
        • 创建一个c程序文件:touch hello.c
        • 打开此文件:vi hello.c / code hello.c
        • 写代码
        • 编译代码:gcc 文件名---> gcc hello.c (使用gcc编译器,编译.c文件,默认生成a.out可执行文件)
        • 执行代码:./a.out
      • 4.gcc编译器
        • 四步:1.预处理 2、编译 3、汇编 4、链接
        • 1、预处理: 删除注释,展开头文件,替换宏定义
        • 命令:gcc -E hello.c -o hello.i
        • 2、编译 检查语法错误,有错报错,没有问题转换为汇编语言文件
        • 命令:gcc -S hello.i -o hello.s
        • 3、汇编   将汇编文件转成二进制文件  
        • 命令: gcc -c hello.s -o hello.o
        • 4、链接 链接库文件 最终生成机器可以识别的可执行文件
        • 命令: gcc hello.o -o hello 执行:./hello
    • 三、C语言
      • 1.计算机数据表示形式
        • 数值型数据
          • 二进制:0b开头      八进制:0或0o开头    十六进制:0x开头
        • 非数值型数据
          • 字符由' '单引号包裹
            • '\0'    0         字符串结束标志
            • '\n'    10       换行
            • ' '       32       空格
            • '0'      48       字符0
            • 'A'     65
            • 'a'      97   
            •                                                                       
            • '2' - 48 = 2
            • 'A' + 32 = 'a'
            • 'a' - ' ' = 'A'                                                                                                                           
            • 字符型数字转成数值型数据:字符0-48=数字0
            • 字符型数据-48=数值型数据
            • 大小写转换:A:65 ---> a:97
            • 大写转小写:大写字母+32=小写字母
            • 小写转大写:小写字母-32=大写字母
      • 2.词法符号
        • 分类
          • 关键字 标识符 运算符 分隔符 标点符号
        • 关键字 32
          • 存储类型:auto(自动) static(静态) extern(外部引用) register(寄存器)
          • 数据类型:char(字符) short(短整型) int(整型) long(长整型) float(单精度浮点型) double(双精度浮点型) signed(有符号) unsigned(无符号)
          • 构造类型:struct(结构体) union(共用体) enum(枚举)
          • 选择类型:if(判断) else(否则) switch case default
          • 循环语句:for while goto do break continue
          • 其他类型:void(空) typedef(重定义) const (常量化) sizeof(计算数据的空间大小) volatile(防止编译器优化) return(返回值)
        • 标识符
          • 标识符用于给变量 宏名 函数名 重定义名
          • 命名规则: 1.由数字 字母 下划线组成 2.数字不能开头 3.不能和关键字重名 4.见名知义
        • 变量
          • 概念:在程序的运行过程中会发生变化的数据 定义格式:存储类型(auto 省略不写) 数据类型 变量名 
        • 运算符
          • 算术运算符
            • + - * / % ++ --  /
            • 两个整数相除,结果会自动取整
              • int a= 9 / 2= 4 // 4.5
              • float a= 9/2; a=4.00000
              • float a=9.0/2 ;a=4.5000
          • 逻辑运算符
            • && 逻辑与:全真则真,一假则假
            • ||     逻辑或: 一真则真,全假则假
            • !      逻辑非: 非真即假,非假即真
            • 截断法则:  逻辑与运算中,前边表达式结果为假,后边表达式不再执行,直接返回假  逻辑或运算中,前边表达式结果为真,后边表达式不再执行,直接返回真
          • 位运算符
            • 二进制数 0 1
            • & 位与:全1则1,有0则0
            • |   位或:有1则1,全0则0
            • ^  异或:相同为0,不同为1             
            •  ~ 取反:0变1,1变0                           
            • << 左移                                           
            • >> 右移
            • 整数在存储时是以补码进行存储
              • 运算用补码进行运算,再转为原码。             
              • 负数补码转反码:-1。                                                                                                       
              • 左移快捷方式:-6 << 3 ---> -6*2^3=-48
              • 右移快捷方式:-32 >> 2 ---> -32/2^2=-8 如果除不尽的话,需要向下取整
          • 关系运算符
            • >   <  >=    <=  ==   !=
          • 赋值运算符
            • =  +=  *=  -=   /=
          • 三目运算
            • 单目运算符:使用此符号运算时只需要一个操作数
            • 双目运算符:使用此符号运算时只需要两个操作数
            • 三目运算符:使用此符号运算时只需要三个操作数
            • 三目运算符(条件运算): ?:
              • 语法:表达式1?表达式2:表达式3
              • 运算规则:判断表达式1是否成立?如果成立执行表达式2(:前面部分),如果不成立执行表达式3
          • 运算符优先级
            • 单目运算符 ! ~ ++ --
            • 算术运算符 * / % + -
            • 移位运算符 << >>
            • 关系运算符 < <= > >= == !=
            • 位与运算符 &
            • 异或运算符 ^ |
            • 逻辑运算符 && ||
            • 条件运算符 ?:
            • 赋值运算符 = += *= /= %= ...
            • 口诀:单算移关与 异或逻条赋。   单目运算,从右向左单条赋。         逗号运算符优先级最低。
          • 置1/0公式
            • 置一公式:a|(1<<n)
            • 置零公式:a&(~(1<<n))   a=5===>101 010   5|(1<<1)=== 5|2 = 111
      • 3.变量
        • 概念:在程序的运行过程中会发生变化的数据
        • 定义:存储类型 数据类型 变量名
        • 数据类型
        • 变量分类
          • 全局变量:定义变量时定义在函数外部
          • 局部变量:定义变量时定义在函数内部
      • 4.常量
        • 概念:在程序的运行过程中不会发生变化的数据
        • 分类
          • 字符型常量
            • 使用' '引起来的数据都称之为字符型常量。
            • 'a'--->字符a
            • '0'--->字符0
            • '\n'--->换行符
            • ' '只能引起来一个数据(一个字母 一个数字 一个符号)
            • \ :代表转义,后面会跟随八进制 十六进制 一些字母 符号;
            • \?--->文本?
            • ' \' '--->字符引号
            • ' \\ '--->字符 \
            • '\x41'--->字符A--->'A'--->'\101'
          • 字符串常量
            • 使用" "引起来的数据称之为字符串常量。
            • "hello"--->字符串hello ---> 'h' 'e' 'l' 'l' 'o'。
            • 对于字符串数据程序会在最后添加\0,做为字符串结束的标志,"abc"---->3个 占4个字节空间。
          • 整型常量
            • int存储
          • 浮点型常量
            • 一般使用float存储
          • 指数常量
            • 3*10^2--->3e2 5*10^20--->5e20
          • 标识常量
            • 宏定义:起到标识作用,宏替换 、宏代替
            • 定义格式:#define 宏名(一般大写) 常量或者表达式
            • 特点:使用宏时,只做单纯替换,不进行计算
              • #define N 2
              • #define M N+3 // 2+3
              • #define NUM N+M/2+1 // 2+2+3/2+1
              • void main()
              • { int a = NUM; // 6
              • printf("%d\n",a); // 6 }
      • 5.输入输出
        • 按照字符输入输出
          • 函数:三要素:功能 参数 返回值
          • getchar()
            • 功能:按照字符输入(从终端获取一个字符)
            • 参数:没有参数
            • 返回值:你输入的字符的ascii(int 类型)
              • int a=getchar(); //输入A  
              • printf("%d\n",a);//输出65
          • putchar()
            • 功能:向终端输出一个字符
            • 参数:你要输出的字符的ascii值,也可以写字符
            • 返回值:输出字符的ascii值
              • putchar(97);//输出a
              • putchar('\n');//换行
        • 按照格式输入输出
          • int printf(const char *format, ...);
          • 功能:按照某种格式向终端输出一串信息
          • 参数:一个或者多个,一个字符串,用于填写想要呈现的信息内容, 后续参数由前期字符串中的格式的个数决定。
          • 返回值:输出字符的个数。
          • 格式: int %d 整数
          • float %f 
          • double %lf
          • char %c
          • 字符串 %s
          • 十六进制 %#x %x
          • 八进制 %#o %o
          • 地址 %p
          • 指数 %e
          • %-m.n 含义:m:位宽 n:保留几位小数 -:左对齐
;