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

C/C++中的二级指针使用

二级指针就是:指向指针的指针,它存储的是“另一个指针变量的地址”。

int a = 10;
int* p = &a;      // p 是一级指针,指向 int
int** pp = &p;    // pp 是二级指针,指向 int*
┌─────────────┐
│    a = 10   │
└─────┬───────┘│▼
┌─────────────┐
│ p = &a      │ → 保存了 a 的地址
└─────┬───────┘│▼
┌─────────────┐
│ pp = &p     │ → 保存了 p 的地址
└─────────────┘

a 是变量;

p 是指针,*p 取出 a 的值;

pp 是二级指针,*pp 就是 p;

**pp 取出最终的值 a。

std::cout << a << std::endl;     // 10
std::cout << *p << std::endl;    // 10
std::cout << **pp << std::endl;  // 10

用途:

1、动态分配二维数组

例如动态创建一个 3×4 的二维整型数组:

#include <iostream>int main() {int rows = 3, cols = 4;// 创建“指针数组”int** arr = new int*[rows];// 为每一行分配列for (int i = 0; i < rows; ++i)arr[i] = new int[cols];// 使用for (int i = 0; i < rows; ++i)for (int j = 0; j < cols; ++j)arr[i][j] = i * 10 + j;// 输出for (int i = 0; i < rows; ++i) {for (int j = 0; j < cols; ++j)std::cout << arr[i][j] << " ";std::cout << std::endl;}// 释放内存for (int i = 0; i < rows; ++i)delete[] arr[i];delete[] arr;return 0;
}

2、修改指针本身(函数参数)

假设有一个函数需要在函数内部改变指针的指向(例如 mallocnew 分配内存),那么必须用“指针的指针”。

#include <iostream>void allocateMemory(int** p) {*p = new int(100);   // 改变调用者传入的指针
}int main() {int* ptr = nullptr;allocateMemory(&ptr);  // 传入指针的地址std::cout << *ptr << std::endl;  // 输出 100delete ptr;
}

3、C 语言字符串数组(char**

int main(int argc, char** argv)

这里的 argv 就是一个“指向字符串指针数组的指针”。

也就是说:

  • argvchar**

  • argv[i]char*

  • argv[i][j] 是一个 char

示例:

for (int i = 0; i < argc; ++i) 
{ std::cout << argv[i] << std::endl;
}
http://www.dtcms.com/a/549797.html

相关文章:

  • 用dw做红米网站网站管理助手v3
  • 网站建设电话话术有趣软文广告经典案例
  • Fetch API 返回值获取方法
  • 机器学习-导师优选
  • 做视频网站要准备哪些资料阿里虚拟机建设网站
  • 使用局域网做网站百度手机助手网页
  • VMware-三种网络模式
  • 【weblogic】文件上传漏洞
  • 用 Rust 写一个前端项目辅助工具:JSON 格式化器
  • OrionX GPU池化社区版永久免费,算力管理焕新升级!
  • Rust 控制流深度解析:安全保证与迭代器哲学
  • 异常处理机制
  • 一元云淘网站开发android开发最全教程
  • 第 18 天:Web 服务器(Apache、Nginx、反向代理)
  • 郑州网站运营实力乐云seo如何从下载的视频查到原网站
  • nodejs有几种模块模式
  • 非法网站怎么推广海口专业的网站开发
  • 网站建设实训心得与建议安徽省工程建设信息网职称查询
  • 【高阶数据结构】AVL树
  • 三明 网站建设如何建立自己的
  • 可以做兼职的动漫网站公司网站想维护服务器
  • Go语言设计模式:桥接模式详解
  • 前端(Vue3)如何接收后端(SpringBoot)返回的文件并下载
  • 低空经济网络安全体系
  • 福建省建设资格注册中心网站东莞网站推广技巧
  • 汉阳做网站多少钱网站服务器时间查询工具
  • WPF的MVVM模式核心架构与实现细节
  • HarmonyOS 开发高级认证是什么?含金量高吗?
  • 做国外的众筹网站怎么办一个网站
  • 网站设计联盟兰州关键词优化排名