朱有鹏嵌入式Linux C基础总结

2019-07-12 17:08发布

本文总结于朱有鹏物联网大讲堂Linux C基础视频,希望各位批评指正!感谢朱老师的帮助^_^ 1.C语言写代码步骤:     第一步:编辑源代码(使用vi或者其他编辑器)     第二步:编译。编译就是用编译器把源程序转化成可执行程序的过程,编译要用到编译器。            我们在linux中使用编译器一般是gcc。            譬如:gcc hello.c 把当前目录下hello.c文件编译,得到的可执行文件名字叫a.out         也可以自己指定编译后生成的可执行程序的名字,使用gcc hello.c -o hello  第三步:执行编译生成的可执行程序,执行方式是./hello  第四步:调试。当你执行后发现程序结果不对,不是自己想要的,这时候就是返回来看源代码哪里不对。          然后修改,再编译执行,再看结果。如此循环直接结果正确。
2.VMWare共享文件夹使用     在linux中,直接到 /mnt/hgfs目录下,即可找到刚才第二步中Name相同的名字的文件夹,     这个目录即是第一步中Windows中目录在linux下的映射。
3、C语言数据类型     3.1、整形         C语言中的整形对应数学中的整数,整形变量是用来描述一个整数值的,整形变量经过计算后也         只能是整数(整型),不可能出现小数(浮点型).     3.2、浮点型         C语言中浮点型对应数学中的小数。浮点型有float和double两种。使用方式相同,不同在于         表示范围和精度。float表示的范围小,精度低(小数点后6位);         而double表示范围大,精度高。(小数点后16位)         范围是说表示的数有多大,精度是指这个数的分辨率有多细          注意:printf中打印float或double类型,都是用%f,不能用%d。     3.3、字符型         字符型对应ASCII字符。ASCII字符是一种编码,就是用数字编码来表示一个符号的一种方法         本质上说,字符型其实也是整形,只是这些整形数被用来表示一些字符的ASCII编码值,         所以叫做字符型。字符型一般用8位二进制表示,无符号字符型范围是0~255.         字符型其实是一种比short还短的整形,所以它可以和int相运算。     3.4、有符号数和无符号数         数学中数是有符号的,有整数和负数之分。所以计算机中的数据类型也有符号,         分为有符号数和无符号数。              有符号数:              整形:signed int(简写为 int)              signed long,也写作signed long int,(简写为long)              signed short,也写作signed short int(简写为short)              signed(表示signed int)              浮点型:              signed float(简写为float)              signed double(简写为double)              字符型:              signed char(简写为char)                无符号数:              整形:整形无符号数,用来表示一些编码编号之类的东西。譬如身份证号,房间号                 unsigned int(没有简写)                 unsigned long int(简写unsigned long)                 unsigned short int(简写为unsigned short)          对于char short int long等整形类型的数,都分有符号有无符号数。          而对于float和double这种浮点型数来说,只有有符号数,没有无符号数。     对于C语言来说,数(也就是变量)是存储在内存中一个一个的格子中的。存储的时候是以二进制     方式存储的。对于有符号数和无符号数来说,存储方式不同的。         譬如对于int来说unsigned int 无符号数,32位(4字节)全部用来存数的内容所以表示的数的         范围是0 ~ 4294967295(2^32 - 1)         signed int有符号数,32位中最高位用来存符号(0表示正数,1表示负数),剩余的31位         用来存数据。所以可以表示的数的范围-2147483648(2^32)  ~ 2147483647(2^31 - 1)     结论:从绝对数值来说,无符号数所表示的范围要大一些。因为有符号数使用1个二进制位来表示           正负号。         浮点数:没有无符号浮点数。也就是说,小数一般只用在数学概念中,都是有符号的。         字符型:字符型有无符号数            unsigned char(没有简写)        注意:对于整形和字符型来说,有符号数和无符号数表示的范围是不同的。              譬如字符型,有符号数范围是-128~127,无符号数的范围是0~255。              a++是先执行表达式后再自增,执行表达式时使用的是a的原值。                               ++a是先自增再执行表达示,执行表达式时使用的是自增后的a。
4.程序结构      4.1、switch case          1、case中必须是常数,而且必须是整形(不能是float double,可以是int char)          2、一般来说,每个case中代码段后都必须有一个break          3、case之后一般都会有default。语法上允许没有default,但是建议写代码时一定要写。     4.2、switch case和if else对比:          1、if else适合对比条件比较复杂,但是分支比较少的情况;switch case适合那种对比条件            不复杂,但是分支数很多的情况。          2、所有的选择结构,其实都可以用if else来实现。但是只有部分才可以用switch case实现。             一般的做法是:在适合使用switch case的情况下会优先使用switch case,如果不适合             使用switch case,则不得不使用if else。
5.复合数据类型     所谓复合数据类型,是指由简单数据类型,经过一定的数据结构封装,组成的新的数据类型。     譬如数组、结构体。     5.1、数组的初始化          第一种:完全初始化。依次赋值          第二种:不完全初始化。初始化式中的值从a[0]开始,依次向后赋值,不足的默认用0填充赋值     5.2、数据类型实质          C语言程序中,变量的实质就是内存中的一个格子。当我们定义(创造一个变量)了一个变量后,          就相当于在内存中得到了一个格子,这个格子的名字就是变量名,以后访问这个内存格子          就使用该变量名就行了。这就是变量的本质。
          数据类型的实质是内存中格子的不同种类。譬如在32位机器上          短整形格子(short)                占用2字节空间 16位          整形格子(类型是int)、            占用4字节空间 32位          单精度浮点型格子(float)、        占用4字节空间          双精度浮点型格子(double)、       占用8字节空间 64位          字符型格子(char)。              占用1字节空间 8位     5.3、sizeof运算符          作用:返回一个变量或者一个数据类型的内存占用长度,以字节为单位。               sizeof(a) / sizeof(a[0])    测试一个数组中究竟有多少个元素     基础知识:     1、在C语言中引用一个单个字符时,应该用单引号''括起来,譬如'a'。     2、定义数组同时初始化,则可以省略数组定义时[]中的长度。C语言编译器会自动推论其长度,        推论依据是初始化式中初始化元素的个数。由此可知,省略[]中数组元素个数只有一种情况,        那就是后面的初始化式必须为完全初始化。     3、在C语言中引用一个字符串时,应该用""括起来,譬如"abcde"     "abcde"实际上有6个字符,分别是'a' 'b' 'c' 'd' 'e' '