当前位置: 首页 > news >正文

如何在C++中正确地使用和操作指针?

C++指针正确使用与操作(精简完整版)

一、指针基础定义

指针是存储变量内存地址的变量,格式:类型* 指针名

inta=10;int*p=&a;// &取地址,p存放a的地址*p=20;// *解引用,修改地址对应的值

二、核心基础操作

  1. & 取地址:获取变量内存地址
  2. *** 解引用**:通过地址访问对应数据
  3. 赋值:同类型指针才能互相赋值

三、各类指针规范用法

1. 普通变量指针

intnum=5;int*ptr=&num;cout<<*ptr;// 输出5

2. 数组指针

数组名本质首元素地址,无需加&

intarr[3]={1,2,3};int*p=arr;*(p+1)=99;// 修改第二个元素

3. 函数指针

存储函数地址,用于回调

voidtest(){}void(*fp)()=test;fp();// 调用函数

4. const指针(三种,极易踩坑)

  1. const int* p:指针可改,指向的值不可改
  2. int* const p:指针本身地址固定,值可改
  3. const int* const p:地址、值全都不能修改

5. 二级指针int** p

存放一级指针的地址,多用于动态数组、函数修改外部指针

四、动态内存 new / delete(重点规范)

单个变量

int*p=newint(100);// 开辟堆内存deletep;// 释放内存p=nullptr;// 置空,防止野指针

数组

int*arr=newint[5];delete[]arr;// 数组必须加[]释放arr=nullptr;

规则:

  • new必须配对delete,否则内存泄漏
  • 释放后立刻赋值nullptr,杜绝野指针

五、安全使用准则(避坑核心)

  1. 禁止野指针
    未初始化、已释放的指针都是野指针,访问直接崩溃。
    定义时直接初始化:int* p = nullptr;

  2. 不要返回局部变量地址
    局部变量存栈,函数结束自动销毁,返回地址会失效。

    int*badFunc(){intx=1;return&x;// 错误!}
  3. 指针越界禁止访问
    数组指针p+n不能超出数组长度,会篡改其他内存。

  4. 不同类型指针禁止随意强转
    类型不匹配会造成取值错乱。

  5. 空指针判断
    使用前先判断:if(p != nullptr),避免空指针崩溃。

  6. 堆内存谁开辟谁释放
    new和delete成对,不重复释放同一块内存。

六、C++现代替代方案(优先推荐)

尽量少用裸指针,用智能指针自动管理内存,无需手动delete:

  • unique_ptr:独占资源,性能高
  • shared_ptr:共享资源,计数回收
#include<memory>unique_ptr<int>p=make_unique<int>(10);// 自动释放,不用delete

配套标题可选

  1. C++指针完整使用规范与避坑指南
  2. 一文吃透C++指针操作、内存管理
  3. C++裸指针安全使用全套教程
  4. C++指针从基础到智能指针实战
http://www.jsqmd.com/news/1036343/

相关文章:

  • 2026 年广州包包回收消费图鉴 - 薛定谔的梨花猫
  • Django毕设选题推荐:基于 Python+Django 的学生请假数据统计可视化系统的设计与实现 基于 Python+Django 的大学生【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 北京亨得利手表表盘进水修复全攻略:2026年华贸中心官方售后深度实测,从表镜起雾到机芯生锈全流程急救解析,附劳力士欧米茄卡地亚百达翡丽等品牌真实维修案例与避坑指南 - 劳力士官方售后中心
  • 2026深圳全屋定制深度测评排行榜|九大片区选购攻略,破解装修高频痛点 - 资讯速览
  • Linux(Ubuntu22.04/CentOS8)NetworkManager(nmcli)实战:从基础配置到网络诊断
  • 出生医学证明登报怎么办理?出生医学证明登报多少钱?(附模板+详细流程) - 叮咚办真方便
  • Windows系统文件stobject.dll丢失找不到问题解决
  • 基于STM8S003F3P6的PWM风机调速实战:以HAS10227为例
  • 国内五恒系统服务企业排行:基于资质与案例的客观盘点 - 起跑123
  • 大模型幻觉难题解决办法
  • 文心5.0原生直觉:多模态因果图谱驱动的大模型范式升级
  • Qwen3.6-27B Dense架构解析:代码智能体的稳定推理新范式
  • 2026年大闸蟹礼券推荐:这三家靠谱又超值,闭眼入! - 官方资讯
  • 零代码私有化:企业级AI模型工作站DLTM训推一体化平台助力企业搭建专属AI检测模型
  • PCL2启动器内存分配技术内幕:深度解密Java检测与智能内存计算机制
  • Protobuf.js数据可视化实战:从二进制序列化到交互式图表架构深度解析
  • 户口本公证书怎么办理?户口本公证需要什么材料?
  • 【避坑指南】Vivado 18.3 从下载到激活:一份面向FPGA/ZYNQ新手的完整安装图解
  • 3PEAK思瑞浦 TPA9151A-SO1R SOP8 差分运放
  • 2026年杭州车衣裳CYS改色贴膜终极避坑:为何诚艺贴膜成首选? - 品牌报告
  • 2026年符合食品厂审核的消杀公司推荐 专注菏泽食品厂/菏泽制药厂/菏泽包装厂专业虫害防治 - 速递信息
  • Rnote:重新定义数字手写体验的终极开源笔记解决方案
  • FT4222模块在树莓派上的Python实战:从驱动安装到SPI/GPIO控制
  • 同城就近变现无忧,m2026常州回收黄钻高口碑机构排名 - 名奢变现站
  • [Android] 网页转应用v1.9
  • 2026年临沂短视频制作:深度系统解析与必读实战案例。 - GrowthUME
  • 邵阳新邵县黄金回收正规门店盘点|30 年老品牌全城免费上门,无隐形扣费 - 衡金阁
  • 2026重庆奢侈品包包回收综合实力排名测评:7家本地门店实地走访,新手闲置卖包不踩坑 - 薛定谔的梨花猫
  • 2026保姆级教程:PDF压缩到指定大小,免费在线/本地电脑工具手把手教学 - 软件小管家
  • GitHub520:智能DNS优化工具解决GitHub访问难题