目录
前言
1. 计算机存储机制
2. 定义指针
2.1 指针操作
2.2 数组与指针
前言
指针(Pointer)是C语言的一个重要知识点,其使用灵活、功能强大,是C语言的灵魂。指针与底层硬件联系密切,使用指针可操作数据的地址,实现数据的间接访问。
1. 计算机存储机制
2. 定义指针
指针即指针变量。也就是说指针和char型、int型、float型一样,都是一个变量类型。用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。倘若指针存放了某个数据单元的首地址,则这个指针就指向了这个数据单元;若指针存放的值是0,则这个指针为空指针;
2.1 指针操作
倘若已经定义了:
int a; //定义了一个int型数据
int *p;//定义了一个指向int型数据的指针
那么指针p可以有如下的操作:
取地址:p=&a 表示将数据a的地址赋值给p
取内容:*p 表示取出指针指向的数据单元
加:p++ 指针向下移动一个数据宽度
p=p+5 指针向下移动五个数据宽度
减:p-- 指针向上移动一个数据宽度
p=p-5 指针向上移动五个数据宽度
2.2 数组与指针
数组是一些相同数据类型的变量组成的集合,其数组名即为指向该数据类型的指针。数组的定义等效于申请内存、定义指针和初始化。
例如:char c[]={0x33,0x34,0x35};
等效于:申请内存
定义char *c=0x4000;
初始化数组数据
利用下标引用数组数据也等效于指针取内容。
例如:c[0] 等效于:*c
c[1]等效于:*(c+1)
c[2]等效于:*(c+2)
以上程序再一次证明了数组名等价于指针。