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

基于算法竞赛的c++编程(25)指针简单介绍和简单应用

指针的基本概念

指针是一种变量,用于存储另一个变量的内存地址。通过指针可以直接访问或修改内存中的数据,提供灵活的内存管理手段。在C++中,指针的类型必须与其指向的数据类型一致。

int var = 10;      // 定义一个整型变量
int *ptr = &var;   // 定义一个指针,指向var的地址

指针的声明与初始化

声明指针时需在变量名前添加*,初始化时使用&获取变量的地址。未初始化的指针称为野指针,可能引发程序崩溃。

double value = 3.14;
double *dPtr = &value; // 正确初始化
int *uninitPtr;        // 未初始化,危险!

指针的解引用

通过*操作符访问指针指向的内存数据。解引用时需确保指针已指向有效内存。

cout << *ptr;   // 输出10(var的值)
*dPtr = 9.99;   // 修改value的值为9.99

指针的简单应用:动态内存分配

使用newdelete操作符动态分配和释放内存,适用于运行时确定大小的场景。

int *arr = new int[5]; // 动态分配5个整型空间
arr[0] = 1;            // 操作动态数组
delete[] arr;          // 释放内存

指针与数组的关系

数组名可视为指向首元素的指针。指针算术可用于遍历数组。

int nums[3] = {1, 2, 3};
int *p = nums;        // p指向nums[0]
cout << *(p + 1);     // 输出nums[1]的值2

指针作为函数参数

通过指针传递参数可实现函数内修改外部变量(按引用传递的效果)。

void increment(int *p) {(*p)++;
}int main() {int x = 5;increment(&x);    // x变为6
}

注意事项

  • 避免空指针解引用(使用前检查是否为nullptr)。
  • 动态内存分配后必须释放,防止内存泄漏。
  • 指针类型需严格匹配,否则可能导致未定义行为。
http://www.xdnf.cn/news/13022.html

相关文章:

  • sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
  • Q1起重机指挥理论备考要点分析
  • 内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
  • 基于物联网技术设计的设计室内宠物监护系统
  • switch语句解析
  • Python训练打卡Day45
  • 2 Studying《Android源代码情景分析(罗升阳)》
  • WebRTC调研
  • 门静脉高压——表现
  • Spring Security 认证流程——补充
  • 5G 智慧工业园区解决方案
  • 多元隐函数 偏导公式
  • 跨链模式:多链互操作架构与性能扩展方案
  • 06 Deep learning神经网络编程基础 激活函数 --吴恩达
  • 基于深度学习的图像分割技术:原理、应用与实践
  • Citation引证/Equilateral Triangle等边三角形/ 字符串旋转/F.小红的区间修改(二)
  • ip子接口配置及删除
  • USB Over IP专用硬件的5个特点
  • webpack打包vue项目
  • 【大厂机试题解法笔记】食堂供餐
  • 进程间通信详解(一):管道机制与实现原理
  • PP-OCRv5 ubuntu20.04 OCR识别服务
  • 第三章 3.1 传感器安全
  • 代码随想录刷题day30
  • Invalid context structure解决Dify框架中图像推理错误:一步步排查与修复指南
  • 相机从app启动流程
  • helm使用说明和实例
  • 数据库分批入库
  • Vue 模板语句的数据来源
  • linux之 内存管理(6)-arm64 内核虚拟地址空间变化