指针常量,NULL指针,指针的指针,&p,*p,&(*p),*(&p),这些怎么区分,怎么理解,

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/19 15:52:13

指针常量,NULL指针,指针的指针,&p,*p,&(*p),*(&p),这些怎么区分,怎么理解,
指针常量,NULL指针,指针的指针,&p,*p,&(*p),*(&p),这些怎么区分,怎么理解,

指针常量,NULL指针,指针的指针,&p,*p,&(*p),*(&p),这些怎么区分,怎么理解,
指针常量是指针所指向的位置不能改变,即指针本身是一个常量.但是指针常量可以通过间接引用修改内存中的数据.
定义指针常量的语句格式为:
指针类型 *const 指针常量名=&变量名
比如说定义了一个整形变量 int a = 1; 同时定义了一个指针p指向这个变量a: int *p = &a;
但我用完这个变量和指针的时候我把指针所指向的内存空间释放掉:free(p);这个时候p所指向的内存空间里面的数据1被清空的,但是指针p里面仍然存有一个地址(原来指向a变量内存空间的地址),此时通常再要把指针p设置成空指针:P = NULL.
指向指针的指针变量定义的形式为:
类型名 ** 指针变量名;
"**指针变量名"等价于"*(*指针变量名)",表示该指针变量的值存放的
是另个指针变量的地址,要经过两次间接存取后才能存取到变量的值.
&可以是一个引用,也可以是一个取地址符,比如int p ; 那么&p,就是取地址.也可以定义一个变量的别名,当引用使用.*p是定义一个指针,&(*p) *p是一个存放在p地址里的值,加上&这个就是取这个值的地址,*(&p)这个是先取地址p的值(p可以是个地址)然后再取这个地址的值.
(其实你不用的,我删除了,我又得重写,不过还是谢谢你哦,关键是你要懂!:))