指针是变量的一种,里面是一个地址,通过这个地址找到要找的数据
实质:单元的地址就是指针内容;
在32位的操作系统中,所有类型的指针长度都是4个字节
原因:指针是用来保存地址的,地址的长度是由操作位数决定的,是由操作系统运行处理位数决定的
* 有2个含义
定义的时候:表示后面的变量是一个指针(不涉及取值)
使用的时候:表示取值(取地址里的数据)
int *p = &a; //(√) int型指针 p 指向 a 的地址
int *p; p = &a; //(√) 先定义指针 p 为int型, 再指向 a 的地址
int *p; *p = &a; //(×) p 为 int 型指针,*p为指针 p 指向的地址对应的数据,而 &a 则是 a 的地址
int *p = &a; //p 指向 a 字符 p + 1 加一个字节
char *q = &b; //p 指向 整型 b q + 1 加四个字节
指针的运算
int x = 3, y = 0, *px = &x;
y = *px + 5; //*px 为 x 的值 3,y = 8
y = ++*px; //*px 的值加一,y = 4
y = *px++; //先执行*px = 3,然后y = 3 + 1 = 4
*px++ //取 *p 的值,然后地址加1
(*px)++ // ++是 x 的内容加1