WEEK1

day1

1、开发环境:

vm:虚拟电脑

Linux:嵌入式产品的开发以及服务器都是用linux系统开发的

选择Linux系统中的ubuntu系统:图形界面和window和相似

与Linux尽可能的使用命令的方式执行效率高

2、目录结构:                                    

window有多颗倒置的树

Linux系统目录结构:只有一棵倒置的树,并且树的根 /---》根目录

Linux系统支持多用户,用那个用户登录就显示该用户

~表示:家

文件系统:NTFS  FAT  作用:管理组织文件,方便管理检索  管理工具

Home 有多少个用户就有多少个文件夹

不同类型用户操作的权限不一样

用户分类:

   普通用户:一些权限不能执行

   超级用户:root拥有最高权限

当前目录的位置

注意:没有特殊需要不要动根目录下的文件

3、Linux基本命令

linux系统一切皆是文件(所有的命令都是小写的)

命令的格式 :命令名 操作内容

ls:列出当前位置下的所有文件

如果不清楚命令是什么意思使用man 命令名  (man ls)主要看name即可

ls -a:展示当前目录下的所有的文件,包括隐藏内容(.开头的 ..开头的)

区分不同类型的文件类型:不同的颜色

ls 文件夹名字或者路径:列出指定路径下的内容

cd:切换目录,路径的名字

cd .. 返回上一级

cd . 指当前目录

cd / 到根目录

cd ~切换到路径的家

pwd:显示当前目录所在位置  

绝对路径: 根目录开始 /

相对路径: home/linux

clear: 清屏

mkdir(make director):创建文件夹

touch:创建文件或路径1.c

touch  ./wangsiyuan/2.txt wangsiyuan/2.txt wangsiyuan/3,txt

可以一次创建多个文件:touch 1.c  2.c  3.c

rm(remove):删除文件 rm 6.c

rm -r 删除文件夹/路径 空和非空目录都可以删除

rm -i(information)  删除文件/路径 确认是否删除 y/n

rm -ir(-代表选项 可以拼在一起)

rmdir:删除文件夹 rmdir wangsiyuan  //只能删除空目录

拷贝:

cp(copy):需要拷贝文件/路径 目标文件

拷贝整个目录

cp -r 需要拷贝文件目录/路径 目标路径下

移动命令:

mv 原文件及文件夹/路径 目标路径 移动之后原文件不见了(还有重命名的功能)

mv 原文件名 新文件

4、写代码用到的工具vim

vim工具的使用:

vim的三种模式:

插入模式:只用在这种模式下才可以编辑

命令行模式: 输入命令的,复制粘贴等操作

底行模式:输入命令 保存文件 退出(关闭文件)

模式之间的切换:

   命令行模式--->插入模式 键盘输入i 即可

   插入模式—>命令行模式 ESC

   yy复制光标所以在的一行 p复制到下一行

   多行复制:nyy(复制的行数)

   dd ndd删除多行

cat 1.c查看文件内容

u 撤销

命令行模式—>底行模式:  :wq(write quit)   :w  /:q(退出不保存) 

 :q!->强制退出

打开文件:vim 文件名

如果这个文件存在直接打开

如果文件不存在,会新建一个

关闭文件   :

day2

1、gcc编译(GNU compiler Collection GNU编译套件)

c语言的源程序是给程序员看的-计算机只能识别01

        

       gcc将c转成机器语言01

      

        工作的4个步骤:

            

        预处理-->编译-->汇编-->链接 得到可执行文件

         预处理:gcc -E 3.c(源文件) -o 3.i

     

         编译:gcc -S 3.i  -o 3.s

       

         汇编:gcc -c  3.s  -o  3.o

         

         链接:gcc 3.o -o 3

        

         可执行文件: ./3

           一步生成:ggc 源文件.c(3.c)  默认可执行文件./a.out

           gcc 3.c -o main

2、计算机的基本结构:

   cpu(处理器、存取器、控制器)、输入、输出设备

              执行顺序:输入设备-->外存-->内存-->寄存器-->cpu-->输出设备

              外存:如磁盘、u盘 。存cpu暂时用不上的数据和程序    容量大、速度慢

          

              内存(主存取器):存放cpu需要的程序和数据 ,容量小、速度快  缺点:断电数据消失

              

              寄存器:在cpu中存放正在执行的的程序 高速存储器,容量很小 

             

              程序:计算机能够识别的一组数据(0、1)0整 1负

3、c语言的发展史:

机器语言:010101

             汇编语言:将机器语言符号化人好记忆,机器识别来不方便 ,效率低。不同的cup架构对应编译指令的不一样

                            手机ARM, 电脑是intel ,不同cpu架构间进行代码移植的话没法操作。

            

            高级语言:更接近人类语言,越高级的语言,对人越友好。cpu就没有关系

         

            c语言的特点:数据结构丰富、丰富运算符、跨平台~!

        

4、c的数据分类:

  数值类型的数据和非数值类型的数据

                  

                    数据分类:能够进行算数运算得到明确数值的概念

                   

                    非数值数据:图片、语音、文字

                    

                       数值的表示形式:

                       

                         二进制:0-1 给计算机使用  b01001 0101

                   

                         八进制:0-7  用0开头    076  满8进1

           

                         十进制:0-9              10 102 满10进1

                               

                         十六进制:0-9 a-f A-F  用0X或者0x  0x98  满16进1

下午:      二进制转十进制 2的次方0开始依次加1 1000 0110 b134

              

               十进制转二进制、八进制   右-->左 100 b1100100  0144 0x64

                2-->8 2^3   3位2进制表示一个8进制数

               

                000---0

                001---1

                010---2

                011---3

                100---4

                101---5

                110---6

                111---7

  例、0752--->b111 101 010

        

         0632--->b110 011 010

       

         b110 111 011-->0673

       

       2的4次方是16 4位2进制数表示一个16进制的数

       

          二进制   十六进制              

                         从0~15

           0000        0    

           0001         1

           0010         2

           0011         3

           0100         4

           0101         5

           0110         6

           0111         7

           1000         8

           1001         9

           1010         a

           1011         b

           1100         c

           1101         d

           1110         e

           1111         f

        0x8ec--->b 1000 1110 1100

        0x752--->b 0111 0101 0010

         数值类型表示:ASCII(American Standard Code information interchange)

        

         0~9  48~57   

         空格字符‘\0’ 0

         A~Z 65   依次加一

         a~z  97   依次加一

        

关键词(小写):

 

         分类:

         数据类型关键字:char、double、enum、float、int、long、short、struct 、union、void

        

          控制语句:break、case、continue、default、do、else、for 、goto、if 、switch while

         

          数据存储类型:auto extern register static

        

          其他关键字:const修饰符---只读

       

          Return-结束函数

  

         Sizeof-计算内存大小

          

         volatile(异变的)-防止编译器优化

        

         typeof-对已存在的数据类型进行重命名

         

        signed:有符号-->数据可以正数也可以是负数

       

        unsigned--->无符号只能是正数

         

       注意:内存的基本单位是字节 1个字节位8位

            

                   1byte=8bit   KB MB GB TM 1024

                   1和10分别的存储

           

                  0000 0001

                  0000 1010

              

                  sizeof运算符验证,不同类型占的字节

               

                 char    1

                 short   2

                 int       4

                 long    8

          先看符号:数据可以是正数也可以是负数

               char  1 在内存中存储:

               

              0000 0001

         

             char    -1

     

            原码、反码、补码、并且符号位的最高位表示符号位,0正数 ,1负数。负数在内存中以补码的形式存储补码

            补码?  补码=反码+1

            反码?  反码=原码取反  0-->1  符号位不变

           char类型 -1 在内存中的存储

         

            原码:1000 0001

            反码:1111 1110

            补码:1111 1111

           char类型 -5 在内存中的存储

         

           原码:1000 0101

           反码:1111 1010

           补码:1111 1011

           正数的补码=原码  12

           

         原码:0000 1100

         反码:0111 0011

         补码:0000 1100

           

      signed(有符号):可正可符。最高位为符号位  存储:补码的形式存储 正数的补码是原码  负数的补码  原码-->反码-->补码

     

   unsigned(无符号):只能是整数   存储该咋存咋存无原码、反码、补码一说

    

       浮点型数据,分为整数部分和小数部分,他在内存中的存取方式和整数的存取方式就不一样了

       不能用= 只能取近似

      各种数据类型的取值范围:

       

           signed char 1000 0000~0111 1111 结果是:-128~127 --> -2^7~2^7-1

           unsigned char 0~1111 1111                         0~255-->0~2^8-1

          

           signed int   -2^31~2~31-1

           unsigned int 0~2^32-1

           short -2^15 ~2^15-1

                      0~2^16-1

           

           long -2^63~2^63-1

                    0~2^64-1

          

       浮点型:float 4 小点后面有6为

                  double 8  小数点后有15位

      面试题

      

        signed char a=255  -128-127 越界

    

            1111 1111 -->-1(减1) -->1111 1110--->取反 1000 0001 的 -1

        

       signed char a=243 

         

            1111 0011 -->1111 0010 -->1000 1101 的 -13

  6、常量:

            常量:值不可修改

            变量:值可以修改

           

         常量分类:

                 

                整型:10 100 各种进制数都可以

                字符常量 : 'a'

                长整型常量:78L

            

                无符号整形常量:78U

                浮点型常量:12 2.2

                字符串常量:“hello world" 内存中占几个字节?12字符 串都是以"\0"结尾的 为字符串的

                                       结束符号

                                        \0 ASCII 转为0 故12位

       代码中的常量?宏来表示

         

          #define 名称  数值

          在预编译的时候将宏的值进行替换

 总结:宏在使用的过程就是一个简单的文本替换!

   

好处: 只要修改宏的值,一改全改

   

宏还可以用来表示函数,叫宏函数!

宏函数在定义的时候在定义的时候要给每一个加括号,因为在用的时候就是简单的文本替换替换

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值