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

如何在C++中正确地使用和操作指针? C指针正确使用与操作精简完整版一、指针基础定义指针是存储变量内存地址的变量格式类型* 指针名inta10;int*pa;// 取地址p存放a的地址*p20;// *解引用修改地址对应的值二、核心基础操作 取地址获取变量内存地址*** 解引用**通过地址访问对应数据赋值同类型指针才能互相赋值三、各类指针规范用法1. 普通变量指针intnum5;int*ptrnum;cout*ptr;// 输出52. 数组指针数组名本质首元素地址无需加intarr[3]{1,2,3};int*parr;*(p1)99;// 修改第二个元素3. 函数指针存储函数地址用于回调voidtest(){}void(*fp)()test;fp();// 调用函数4. const指针三种极易踩坑const int* p指针可改指向的值不可改int* const p指针本身地址固定值可改const int* const p地址、值全都不能修改5. 二级指针int** p存放一级指针的地址多用于动态数组、函数修改外部指针四、动态内存 new / delete重点规范单个变量int*pnewint(100);// 开辟堆内存deletep;// 释放内存pnullptr;// 置空防止野指针数组int*arrnewint[5];delete[]arr;// 数组必须加[]释放arrnullptr;规则new必须配对delete否则内存泄漏释放后立刻赋值nullptr杜绝野指针五、安全使用准则避坑核心禁止野指针未初始化、已释放的指针都是野指针访问直接崩溃。定义时直接初始化int* p nullptr;不要返回局部变量地址局部变量存栈函数结束自动销毁返回地址会失效。int*badFunc(){intx1;returnx;// 错误}指针越界禁止访问数组指针pn不能超出数组长度会篡改其他内存。不同类型指针禁止随意强转类型不匹配会造成取值错乱。空指针判断使用前先判断if(p ! nullptr)避免空指针崩溃。堆内存谁开辟谁释放new和delete成对不重复释放同一块内存。六、C现代替代方案优先推荐尽量少用裸指针用智能指针自动管理内存无需手动deleteunique_ptr独占资源性能高shared_ptr共享资源计数回收#includememoryunique_ptrintpmake_uniqueint(10);// 自动释放不用delete配套标题可选C指针完整使用规范与避坑指南一文吃透C指针操作、内存管理C裸指针安全使用全套教程C指针从基础到智能指针实战