内存类型资源的地址;
指针变量: 存放指针这个概念的盒子;
在32 bit系统中,指针就4个字节;
指针指向内存空间,一定要保证合法性;
修饰符 | 内容解释 |
---|---|
const | 常量,只读(不能变) |
volatile | 防止优化执行内存地址 |
typedef | 别名方便理解代码 |
+
:指针的加法运算,实际上加的是一个单位,单位的大小可以使用sizeof(p[0])
查看;
++
: 实际作用为更新地址;
减法类似;
[]
:标签访问;可以作为地址变量;
逻辑操作符:一般地址不进行大小比较,通常使用等价;
int **p
: 存放地址的地址;
指针变量的特殊化,是内存分配的一种形式;
定义一个空间,有空间的大小,以及所需要的读取方式;
命名规则: 数据类型 数据名[m]
m的作用域是在申请的时候;
数组名字为常量,一定不要放在 = 的左边;
按照标签逐一处理即可;例如:
int a[2]; a[0] = 1; a[1] = 2;
如果一个个赋值工作量比较大,所以可以写为下列进行赋值操作;
int a[2]={1,2}
数组空间的初始化和变量的初始化本质不同,尤其在嵌入式的裸机开发中,空间的初始化往往需要库函数的辅助;
非字符串空间初始化:
字符空间,ASCII码编码来解码的空间,是为了方便阅读。
非字符空间,如数据采集,开辟一个存属数据盒子。
char *a[];
int *p[m];
为了提高执行效率,牺牲一点空间换取时间效率,最终结构体的大小一定是4的倍数;
定义结构体的顺序不同,大小也不同;
终结构体的大小一定是4的倍数;
定义结构体的顺序不同,大小也不同;
写不动了写不动了,太菜了太菜了;