指针学习

指针可以理解为保存地址的数据类型。其数据类型大小在32位系统中为4个字节,在64位系统中为8个字节。

常量指针
int a=10;
const int* p=&a;

const 在int*之前的为常量指针,特点是*p不可变,但p可变。
image
在图中红色框住的10是不允许通过指针修改的,但还是可以通过a这个途径修改,因为const只限制到了指针上面,并没有办法将内存锁死。

指针常量
int a=10;
int* const p=&10;

const 在int*之后的为指针常量,特点是p不可变,而*p可变.
image
在图中表现为p已经指向a了,就无法只想b了。

综合体

剩下的一个就是两者的综合体了,什么都没法改变。

int a=10;
const int* const p = &10;

什么都无法改变。

const和指针总结

常量和指针的关系可以从形式上来看,const为常量的意思,*为指针的意思,const int*就为常量指针,int* const就为指针常量。常量指针,不变的是值,指针常量不变的是指针。

const、指针、和结构体的综合运用

image
在函数中进行结构体的值传递时会产生副本,副本的大小和结构体的大小相关,为了节省空间,可以采用指针传递的方式,但指针方式会导致函数中修改内存的之导致结构体中的信息被改变,这时可以在形参中规定传递的指针是常量指针,这样就保证了在函数中只要出现成员被修改的情况就会报错。

posted @ 2024-11-08 17:12  逆天峰  阅读(4)  评论(0编辑  收藏  举报
作者:逆天峰
出处:https://www.cnblogs.com/gcfer//