指针是存储内存地址的变量,核心在于理解地址、类型和解引用;通过&取地址、*解引用实现读写;用于函数改参、动态内存和数据结构;需避免未初始化、悬空、越界和野指针。

指针就是存地址的变量——不是数据本身,而是数据在内存里“住哪儿”的门牌号。它不神秘,但必须理解清楚地址、类型和解引用这三件事,才能真正用好。
指针的本质:地址的容器
计算机内存像一排连续的房间,每个字节都有唯一编号(地址),通常用十六进制表示(比如 0x7fff5fbff8ac)。指针变量的作用,就是专门用来装这个编号的。
- 定义方式是 类型 + *,例如
int *p;表示“p 是一个能存 int 类型变量地址的变量” -
&num取出变量 num 的地址,p = #就是把这张“门牌号”贴到 p 上 - 所有指针变量本身大小固定:32 位系统占 4 字节,64 位系统占 8 字节——因为地址长度就这么多
怎么用指针读写数据:解引用 *
光有地址没用,得能“开门取东西”。* 就是开门钥匙:
-
*p表示“去 p 里写的那个地址,把里面存的值拿出来” -
*p = 100;表示“去那个地址,把原来的值换成 100”——这会直接改掉原始变量 - 注意:
*的行为受指针类型影响:int* 解引用读 4 字节,char* 只读 1 字节,类型错会导致读歪
为什么非用指针不可?三个硬需求
有些事,不用指针根本办不到,或者效率极低:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~