C语言第七节 指针
1、指针定义
指针,指针变量,此变量存储的内容是内存中某块内存的首地址,也就是内存编号;
我们通过指针间接访问到内存中存储的值,程序中需要的内容是值,而指针,也就是地址是一个位置信息;
指针变量所占内存大小只与操作系统的位数有关,64位操作系统下,指针变量所占内存大小为8个字节,而内存编号对应的内存单元为一个字节,字节是内存的最小单位;
既然指针也是变量,那么声明指针变量的语法格式是:
数据类型 变量名 = 初值;
2、指针的定义格式
int *p = NULL;
(int *)是指针变量的类型,表示 p是整形指针,p可以从首地址向下取四个字节大小的空间来获取数据;
p为变量名;
NULL为初始值,恒等于0;
3、* 的含义
1> 如果*出现在声明指针变量时,此时的*仅仅是一个标识符,代表变量是一个指针变量;
2> 如果*与指针变量单独出现,比如*p,此时代表取值,取到p指向内存区域中存储的值;
4、指针做算数运算
注意两点:
1> + - 决定了偏移量是我往内存地址高位还是低位移动,+ 往高位,- 往低位;
2> 往高位还是低位移动多少个字节,是指针类型决定的,类型占多少位就偏移多少个字节。
5、结构体指针
既指向结构体的指针;
在访问成员是可以有两种方法:
第一种是先获取到结构体变量,通过.操作符来访问;
第二种是直接通过结构体指针,指向结构体中的某个成员,既用 -> 来指向。
6、重点记忆
1> 指针类型决定通过指针取值时的偏移量,既从记录地址往高位取几位,得到的存储数据从高位往低位读取,最后得到的结果会因为类型不符发生失真,所以指针类型应与指向变量相符;
2> 打印有关指针变量时,要注意得到的如果是地址时会默认打印对应地址上的数据。