指针
指针是指向一片内存空间的地址,指针变量是变量,是存放一片内存空间首地址的变量,我们一般所说的指针都是指针变量。
指针的定义及赋值:
类型说明 *变量名 列如 int *p;
区别 int *p=NULL 与 *p=NULL
int *p=NULL; //定义指针变量p,并且同时将p的值设置为0x00000000,不是把*p的值设置为0x0000000,这个过程叫做初始化 int *p; *p=NULL; //定义指针变量p,将*p的值设置为NILL,即给p所指向的内存赋值NULL,但是p所指的内存可能是非法的,编译可能会显示内存访问错误,那么做出如下修改,给它一块合法的内存。 int i=10; int *p=&i; *p=NULL; //这时i中的值由10变成了0,而p值本身没变,即内存地址没有改变
指针的大小
int *P; sizeof(p); //指针的大小根据计算机的位数确定,32位机大小为4个字节,64位机大小为8个字节。
指针运算
需要注意的是指针的类型,+1加的是一个指针类型的大小。
int a[10]; int *p=&a; //+1,加了sizeof(int)*1个字节,而不是加sizeof(int[10])*1个字节
指针的使用类型
指针形式
数组形式
int a[10]; int *P=a; p[0]=1; //指针的数组形式 *(p+1)=2; //指针的指针形式
通过指针修改内容的汇编过程
1.找到指针变量的地址
2.通过指针变量的地址,找到内容的地址
3.通过地址找到内容
4.修改内容