C语言开发学习第一天(定义基础)

JAVA刚学一阵,又接了一个C语言的项目,开始学习C语言开发。

c语言中u8,u16,u32和int区别为:符号不同、数据范围不同、内存占用空间不同。

一、符号不同

1、u8:u8表示无符号char字符类型。

2、u16:u16表示无符号short短整数类型。

3、u32:u32表示无符号int基本整数类型。

4、int:int表示带符号int基本整数类型。

二、数据范围不同

1、u8:u8的数据范围为0~+127[0~2^8-1]。

2、u16:u16的数据范围为0~+65535[0~2^16-1]。

3、u32:u32的数据范围为0+2147483647[02^32-1]。

4、int:int的数据范围为-2147483648~+2147483647[-2^31~2^31-1]。 三、内存占用空间不同

1、u8:u8的内存占用空间大小为只占一个字节。

2、u16:u16的内存占用空间大小为占用两个字节。

3、u32:u32的内存占用空间大小为占用四个字节。

4、int:int的内存占用空间大小为占用八个字节。

_s32表示有符号的32位整型数。

#define 定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。预处理,不占内存。 #define 的作用域为自 #define 那一行起到源程序结束。如果要终止其作用域可以使用 #undef 命令。

dim表示定义声明变量,可以定义变量的数据类型。 例如: sizeof(a)/sizeof(*a):数组a的个数。

sizeof(int)=4。

#define 定义一个预处理宏 #undef 取消宏的定义

#if 编译预处理中的条件命令,相当于C语法中的if语句 #ifdef 判断某个宏是否被定义,若已定义,执行随后的语句 #ifndef 与#ifdef相反,判断某个宏是否未被定义 #elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if #else 与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else #endif #if, #ifdef, #ifndef这些条件命令的结束标志. defined  与#if, #elif配合使用,判断某个宏是否被定义

p->next:P和next都是指针,这样之后,是赋值,*p是next对应的值。

sizeof一般用于获取字符串的长度,是处理字符串的重要工具。

同时,sizeof在数据结构这门课中是创建结点必要的命令。

例:head=(node)malloc(sizeof(node)); [注]node为结构体。

sizeof(node)表示获取node类型的长度,malloc(sizeof(node))表示在内存中申请一个node长度的空间。

memset(ptr, value, num) memset是个函数,它有三个参数,一是所要set的首地址,二是set的值,三是set的字节数。 ptr:指针 value:值 length:长度 用途是把指针ptr开始长度为length的空间的值都置为value

memcpy指的是C和C++使用的内存拷贝函数,函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中。

经验分享 程序员 微信小程序 职场和发展