目录
指针的大致介绍:
每个内存单元都有独一无二的地址。
那么一共有多少地址呢?
在32位机器上有2^32个地址,在64位机器上有2^64个地址。
1.一级指针
一级指针例子:
char *p = 0x11223344;
* :表是p是一个指针变量
p中放的是一个地址,而char*是指针变量p的数据类型。
指针变量的类型的意义:
比如:char*,int*,short*……
char*表示p=p+1后p当前的地址加1,也就是说跳过一个字节
而int*则是(p=p+1)地址加4,也就是跳过四个字节
下面有相应的图方便理解。
2.数组指针
数组指针是指针,即指向数组的指针。
例子:若有一个数组为 int arr[10] = {0};
其数组指针为 int(* p)[10] = &arr;
[10]表示p指向的数组有十个元素,int 表是数组的每个元素都是int类型的数据
而p的类型是int(*)[10],对此例子而言p+1相当于跳过4*10个字节。
注意:一定要加(),因为[ ]的优先级高于 * ,若不加(),p就不再与 * 结合,而是与[ ]结合,p就不再是指针,而会变成数组名,会变为int* p[10],这就变成了指针数组(是数组,每个数组元素存放着指针。