C语言学习笔记(一)

 C语言学习笔记(一)

故障导向安全原则

     Linux系统有什么特点

          Linux开源(开源产品没有法律责任)

          Linux网络功能发达

               主要用于服务器,现在云计算很多都是服务器linux,嵌入式系统中linux应用广泛

          Linux支持的硬件丰富

               x86,arm,mips

          Linux是正真的多任务,多用户系统

          Linux安全性更好

          稳定性高

 

          Linux文件系统: 在存储介质上存放文件的一种格式

 

          可以把几个相邻字节合并起来记录一个数字,可以把内存中用来记录一个数字的所有字节成为一个存储区

 

          一个存储区只能记录一种类型的数字,数值可以变但类型不可以变

    

     Linux文件类型——linux一切都是文件

 

     Linux文件目录结构是树形的

 

     决定路径与相对路径

          Linux目录结构里面     .表示当前目录      ..表示父目录

 

     cd - 恢复上一步操作

 

     --help  中文查询

          gg返回开头

          /开始查询

 

     history 查看历史使用过的命令

 

     命令 |more  方便察看很多的命令管道输出到more

 

=======================================================

          vim文本文件编辑器

 

          rm-r 删除目录

 

          cp-a 复制包括字目录

 

          mv    剪切

 

     命令行下:     u 撤销

               x 删除单个字母

 

               a 当前插入

               A 行尾插入

               o 下一行插入

               O 上一行插入

               yy   复制

               p    粘贴

               dd   删除,剪切

               GG   文件尾

               gg   文件头

         

               home 行头

               end  行尾

 

=========================================================

*

*        多行同时插入(快编辑)

*             ctrl + v 选中需要修改的行号

*             ctrl + 上下   单选中列

*                    左右     行选中

*            

*         r+需要改的内容

*         数学+r+需要替换的内容(数字为光标后么的几个)

*

*             shift + i    写入需要插入

*             esc       退出

*   

*             x         删除

*   

*        查着定位

*        :/ 需要查在的内容 (可视化) n可以查找下一个

*   

*        全局查找替换

*        :%s/查找的内容/替换的内容/g  g为全局

*

*    :e 文件名 在命令行中两个文件中相互切换

*    :e #      在两个文件中切换简便写法

*

*    :数字         直接跳到60行

*    vim  文件名 +60 编辑文件时直接跳的60行

*

*    r+需要改的内容

*    数学+r+需要替换的内容(数字为光标后么的几个)

*

*               k

*       h               l

*               j

*

*    自动对齐shift+v 全部选中  再按 = 对齐

*    (shift + 5) 匹配成对的括号

*

*       :n1,n2 m n1    从n1行到n2行剪切到n3行后面

*

*    :n1,n2 copy n3     从n1行到n2行复制到n3行 

*

*    全选      ggVG

*    全部复制 :1,$y

==========================================================

 

     最好需要了解的语言

          c,c++【编译型语言】

          javasctipt(万能语言),python[编译+解释语言:优点-可跨操作系统],

          lua外挂编写,go(谷歌将开发的语言)

 

          <> 首先到标准库所在位置找

          “” 首先在当前目录找,如果当前目录没有则到标准库的位置去找

 

     程序处理的过程

          1、预处理:头文件等预处理                     gcc -E 成.i文件

          2、编  译:把C编译成汇编或者目标文件       

          3、汇  编:把汇编转换成目标文件               gcc -S 成.s 汇编文件

          4、链  接:把目标文件和库文件链接成可执行程序      gcc -c 成.o 生成.o目标文件

 

     gcc -o可以变换新的文件名称

 

     -std=c89 (默认)

     -std=c99 决定采用那个版本进行编译

 

     file 文件名: 看文件格式信息

 

     gcc -v 查看版本

 

     常量——不可修改的已知数据在编译过程中内存就确定

     变量——可以修改可以未知在程序运行中内存才确定

 

     问题:可修改和不可修改什么时候说的?——程序在内存运行时可发现

 

     %p 取地址


计算机由硬件和软件两部分构成

 

     软件

          系统软件:操作系统

          应用软件:

 

     文件系统

          所有文件系统都是采用分组方式管理文件,一个分组里可以包含多个任意多个文件

 

          一个分组里的文件还可以再次分组

    

          文件系统里采用文件夹(目录)代表文件分组

         

          路径

               某个文件到目标文件的线路

    

               绝对路径:根目录作为起点,所有绝对路径以 / 为开头的

               相对路径:相对路径里不应该包含起点的位置

     vim

          由三种工作模式组成

          正常模式,命令模式,插入模式

 

          正常模式下可以执行简单命令

          命令模式下可以执行复杂命令

          插入模式下可以修改文字内容

#include

          <> 表示以系统中预先规定好的一组目录一次作为起点查找目标文件

    

          "" 把当前文件所在目录作为起点查找

 

     注释

          变量命名规则:驼峰命名法,下划线方式

 

     编译器GCC

          windows环境下的gcc。MinGW

 

*

*    c语言里使用变量代表存储区

*         变量必须首先声明然后才能使用

*         变量声明语句可以让计算机给变量分配存储区

*   

*      赋值操作符左边的内容必须可以代表一个存储区,代表一个存储区的内容叫做左值

*              int num = 0;

*              num = num; //左边代表内存中存储区,右边代表存储区里的值

有符号类型 (signed)

     *    char字符类型  256个不同的整数,整数和字符可以互相替代的

     *

     *    '0'- '9' ---> 48 (0x30) - 57

     *    'A'- 'Z' ---> 65 (0x41) - 90

     *    'a'- 'z' ---> 97 (0x61)- 122         'a' - 'A' = 32 (0x20)

     *

          256个ASCII码对应256个字符,被分成两组,每组128个

 

          其中一组字符对应的整数在所有计算机上都一样,这些整数范围从0-127

 

          另外一组字符对应的整数在不同计算机上可能不同,这些整数的范围可能

         +从-128到-1也可能从128到255

 

          '\n' 换行      '\r' 回车(会覆盖当一行)

          '\'' '              '\"' "

          "\\" \        

*   

*         短整型 short  65536个整数

*

*         长整型   long 2^32个整数    <==>    int类型

*

*    无符号类型(unsigned)(eg: unsigned int )

*         无符号类型所包含的最小数字一定是0

*

*         整数相关类型的数字范围相互重叠并且逐渐扩大,越靠近零包含类型越多

*              long( short( char() )  )

*

*         程序中不带小数点的数字后叫u表示数字的类型是无符号整数类型

*

*    浮点类型

*         单精度   float

*         双精度   double

*   

*         程序中带小数点的数字默认是双精度浮点类型

*         在小数点数字后加f表示数字类型是单精度浮点类型

*              3.14f 表示单精度

*   

          C语言里可以扩展新的数据类型叫复合数据类型

    

          C99规范类型

               bool类型

                    0假     1 真

*

*         char    %c                  1byte    256

*         short    %hd  unsignedshort     %hu  2byte    65536

*         int  %d   unsignedint %u   4byte    2^32

*         long %ld  unsignedlong %lu  4byte    2^32

 

*         float    %f  %g      4byte   单精度类型,默认精度小数点后6位

*         double   %lf %lg       8byte   双精度类型,默认精度小数点后15位

 

*         %f和%lf会保留小数点后面多余的零

*         %g和%lg不会保留小数点后面多余的零

 

*

*         sizeof()小括号里对任何存储区内容的修改不会正真发生                         

*              int num = 0;

*              sizeof(num=10)

*              num 还是等于 0

*

 

     非负数二进制转十进制

 

     2^4 = 16      55   1    奇数余1

     2^5 = 32      27   1   

     2^6 = 64      13   1

     2^7 = 128      6    0    偶数余0

     2^8 = 256      3    1

     2^9 = 512      1    1

     2^10= 1024         0    0

 

     负数不能直接在二进制和十进制之间转换,需要借助相反数

 

     负数二进制和十进制转换的时候需要先计算相反数,而后把计算结果转换,

    最后根据转换结果计算相反数

 

     **************

     有符号类型数字最左变的二进制数位可以用来判断符号,这个数为叫符号位

          0表示非负数  1 表示负数

 

     把二进制中每个数位的内容变成相反数,而后再加一得到的结果就是相反数的二进制

     (取反加一)

 

          十进制        二进制

 

     正     B  |    C

               |

          ————————— A->B (负数变正是)B->C (十进制转换成二进制)  

               |         c->D (二进制取反加一)

     负     A  |    D

 

       一个数进行转换时,要先确定,该数是有符号还是无符号什么类型的数据,字符类型8位

          10111010

          如果说这个数是有符号char类型则这个数是负数

          如果说这个数是有符号int类型,int为32为,这1011 1010前面自动补全零

    < 续 C语言学习笔记(二)>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值