C语言学习笔记
前言
最近、花几天时间学习了C语言,不难、指针概念卡我大半天,水平也只是看得懂基本代码。打算玩一个操作系统(汇编+C)来提高自己的C语言水平。
一、位容器
万物都是容器,容器的符号是U,对象就是单个容器的泛称。一切皆对象,具有某些相同属性特征的对象归纳成类。对象(Object)是类(Class)的一个实例(Instance),类是对象的模板。如果将对象比作房子,那么类就是房子的蓝图。我们以自然语言去描述世界,而计算机是用各种数据结构容器去描述世界。一个茶杯容器可以装茶水、可乐、油、米等等无数不同种类的东西,而计算机世界的容器及种类却简单太多、太多了,只有装二进制数据的位容器。最简单的位容器只是1位(bit):0或1,这一位二进制容器可以用0表达为假、1表示为真,等等。其次、就有8位的b(称为字节byte)、16位的z(称为半字z)、32位的w(称为字word)、64位的dw(称为双字Double Word)、128位的、256位的、等等位容器。数据可以用x个二进制位的位容器BUx来表示。对象具有状态、方位、时间等属性,每个属性是用数据值或说位容器BUx或带方向的动态向量集合(V[V0,V1,…,Vj]表示有j个元素的位容器向量)来描述,最后构造了描述对象属性的数据表。对象还有操作,用于改变对象的属性,操作就是对象的行为。操作也可以说是方法或函数,方法就是一段指令;一条机器指令码或是用一个数据字w表示,所以、方法就是一个指令字数组。由一系列方法构成的指令数据表就描述了对象的行为。所以,一个对象就是由属性数据表和方法数据表来描述。
1.C语言的基本位容器类型:
(给变量起易记名字):
typedef int8_t s8; // 8位有符号整数,最高位为1、是负数,反之为正数。8位二进制最多表示256种状态2^8 = 256,-128---127。
typedef int16_t s16; // 16位有符号整数,-32768--32767。typedef为创建别名,c标准名称是int16_t,别名s16(起短名字可以少打符号)。
typedef int32_t s32; // 32位有符号整数(Signed number),表示范围:-2^31(- 2147483648)---(2^31 - 1) (2147483647)
typedef int64_t s64; // 64位有符号整数(Signed number),表示范围:-2^63---(2^63 - 1)
typedef const int32_t sc32; // const是只读变量的意思,sc32意思就是32位有符号整数只读变量。
typedef const int16_t sc16;
typedef const int8_t sc8;
typedef const int64_t sc64;
typedef __IO int32_t vs32; // __IO表示 变量是随时被改变的(volatile),不要进行编译优化,以免出错。如外设寄存器等情形的定义。
typedef __IO int16_t vs16;
typedef __IO int8_t vs8;
typedef __I int32_t vsc32; // _I表示只读权限的32位有符号整数常量类型。
typedef __I int16_t vsc16;
typedef __I int8_t vsc8