首页 > 后端开发 > C++ > 正文

c++指针到底是什么 5分钟彻底搞懂c++指针的用法【详解】

裘德小鎮的故事
发布: 2025-12-18 09:18:09
原创
367人浏览过
指针是存储内存地址的变量,核心在于理解地址、类型和解引用;通过&取地址、*解引用实现读写;用于函数改参、动态内存和数据结构;需避免未初始化、悬空、越界和野指针。

c++指针到底是什么 5分钟彻底搞懂c++指针的用法【详解】

指针就是存地址的变量——不是数据本身,而是数据在内存里“住哪儿”的门牌号。它不神秘,但必须理解清楚地址、类型和解引用这三件事,才能真正用好。

指针的本质:地址的容器

计算机内存像一排连续的房间,每个字节都有唯一编号(地址),通常用十六进制表示(比如 0x7fff5fbff8ac)。指针变量的作用,就是专门用来装这个编号的。

  • 定义方式是 类型 + *,例如 int *p; 表示“p 是一个能存 int 类型变量地址的变量”
  • &num 取出变量 num 的地址,p = # 就是把这张“门牌号”贴到 p 上
  • 所有指针变量本身大小固定:32 位系统占 4 字节,64 位系统占 8 字节——因为地址长度就这么多

怎么用指针读写数据:解引用 *

光有地址没用,得能“开门取东西”。* 就是开门钥匙:

  • *p 表示“去 p 里写的那个地址,把里面存的值拿出来”
  • *p = 100; 表示“去那个地址,把原来的值换成 100”——这会直接改掉原始变量
  • 注意:* 的行为受指针类型影响:int* 解引用读 4 字节,char* 只读 1 字节,类型错会导致读歪

为什么非用指针不可?三个硬需求

有些事,不用指针根本办不到,或者效率极低:

Designify
Designify

拖入图片便可自动去除背景✨

Designify 79
查看详情 Designify

立即学习C++免费学习笔记(深入)”;

  • 函数要改多个实参:C++ 默认按值传参,函数里改的是副本。传指针过去,等于告诉函数“去改我原地址上的值”
  • 动态申请内存:比如 int *arr = new int[1000];,new 返回的就是堆上那块内存的首地址,只能用指针接住
  • 构建链表、树等结构:节点之间靠指针“拉手”,没有指针,就串不起来

安全底线:别踩这四个坑

指针强大,也危险。新手最常栽在这几个地方:

  • 未初始化就用:比如 int *p; *p = 5; —— p 里是随机地址,写进去可能崩溃
  • 指向已释放的内存:delete 后还继续用那个指针,叫“悬空指针”
  • 越界访问:比如指针本该指数组开头,却一路加到第 20 个元素,而数组只有 5 个
  • 野指针比空指针更危险:空指针(nullptr)至少能判断,野指针是“看起来合法、实际乱指”的假地址

以上就是c++++指针到底是什么 5分钟彻底搞懂c++指针的用法【详解】的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号