小白对c语言指针的基础总结

指针

指针是指向一片内存空间的地址,指针变量是变量,是存放一片内存空间首地址的变量,我们一般所说的指针都是指针变量。

指针的定义及赋值:

  类型说明 *变量名  列如 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.修改内容

原文地址:https://www.cnblogs.com/kxsph/p/8654172.html