掌握C的设计思路。
什么是计算机程序语言的学习思路?
基本的程序设计思想+语言工具的特性。不同的点在于语言工具特性(其实就是类库不同),相通的点在于程序设计思想(其实就是算法)。
gcc -o 输出文件名 +空格+输入文件名:即执行gcc的翻译。gcc是将高级语言翻译成机器语言的工具集。
c编译过程:
预处理:
gcc -E:替换过程。
编译:
gcc -S:相当于编译.c变成.s文件。
汇编:
gcc -c:把.s变成.o文件。
链接:
gcc -o:智能完成以上三个步骤。
#include ""--一般都是自定义的头文件。
#include<>--指系统库里的头文件。
gcc -I +查找头文件的目录;//让gcc在查找的目录下查找。
条件预处理:
gcc -D+宏名;等价于在C文件编译前,人为增加了一个宏名(相当于一个开关)
宏体中实现# 与##
#:代表字符串化
##:连接符号
关键字:预先定义的一定意义的字符串。总共32个。
sizeof:关键字,编译器查看内存空间容量的一个工具。
return:函数最后返回值的过程。
c语言操作对象就是内存,如何描述内存呢?那就是数据类型。
硬件操作的最小单位是bit
软件操作的最小单位是byte(1B)。
编译器最优处理大小:系统一个周期所能处理的最大处理单位。int 就描述最优的处理大小类型。char一般用于硬件处理中。
八进制对应是3个比特以0开头,十六进制对应的4个比特以0X开头。
short:比较特殊的16位,有要求的。long,c语言可扩的一个类型,如long long。
有符号数:当作数字来进行运算。
无符号数:当作数据来采集或申请。
float:代表4个字节
double:代表8个字节。
void:更多的是占位或声明表示。
struct:多个元素空间累加的关系
union:多个元素共用起始地址。更多的是技巧型代码。
enum:一堆常数的打包,地位是比较低;枚举变量就是一个整数,可以从打包的常数中去取。只当作人交流的限制符。
typedef:定义类型别名。约定别名一般加后缀 _t。
if else :条件:
switch case :switch +整型 ;case +具体数字。
for :次数
while :条件
do :先执行一次。
goto: 在函数内部跳没问题。
对于资源属性中位置的限定,就是类型修饰符所描述。
auto:放在普通的内存中,可读可写。
register:放在寄存器中,cpu的内部缓存器;定义一些快速访问的变量。这个时候&(取地址)是没有作用的。
static:静态,1、修饰函数内部的变量2、函数外部的变量。3、函数。
extern:外部声明
const:常量的定义;只读的变量。
volatile:告知编译器的关键字,不要优化。应用场景:变量值的改变不仅仅可以通过软件,还可能通过其他的方式(如硬件的用户)。
算术运算符:+-*/%。一般两边数据类型是相同的。%的特性:任一个数%M后,那么值一定是「0,M」的数。
应用场景:1、取一个范围的数2、得到 一个M进制的个位数。3、得到一个循环数据结构的下标
逻辑运算:非0或0;!逻辑取反 与~(按位取反)是完全不同的。
?:翻译成if else
位运算:嵌入式开发中非常重要。
<<: 二进制下的乘法。
>>:要看符号位不同。有符号数负数,右移后符号位补1,无符号正数补0.
&,|,^:& 清零器 |保留,设置器
内存访问符:
():限制符,函数访问符
「」:内存访问ID符,如数组。
{}:函数体的限制符
->or .:变量访问符
&*:由后面数不同的限制符意义不同。