IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 关于二维数组和二级指针的传参问题 -> 正文阅读

[C++知识库]关于二维数组和二级指针的传参问题

前言

我们在刷力扣的时候,会遇到这样一种函数:
在这里插入图片描述
这个看似普通的函数的参数里面存在一个二级指针。
在上课的时候老师提过一嘴二维数组不能直接传进二级指针里面,其中的具体原因暂且不谈,只要记得这样做是会报错就行了。那既然不能直接传,这篇文章就来讲一讲到底应该怎样传参。
特别说明本篇文章感谢汤同学在研究后提供的几种思路。(就是一整个水字数)


问题是这样的

//有一个二维数组,正常情况下是这样定义的:
int a[][3] = {{1,2,3}, {4,5,6}};
//然后能我们想要将这个数组传进这样的一个函数里面:
void text(int** a)
//然后呢  他报错了!!!

从函数头下手

解决不了问题那就解决提出这个问题的东西——改变函数头,让二级指针消失!那不就迎刃而解。

以下是两个可以替代二级指针的写法

方法一

void text1(int a[][10])

方法二

void text2(int (*a)[10])

以上两种写法其实质都和二级指针大差不差,所以可以在设置函数的时候进行替换。

从定义数组下手

有时候吧咱没法改变人定好的函数头,就像文章引入的那个例子一样,所以只能改变自己去解决问题。
所以又给出了第三个方法,在一开始设置数组的时候就搞点小手段:

方法三

int *a[10] = {{1,2,3}, {4,5,6}};
//这里就大概这个意思,直接这么写会报错的哈,

写到这里就不得不提一下int (*a)[10]int* a[10]的区别了。前者呢是对*p的拓展,拓展后的结果就是二维数组。而后者是一个只有十个元素的指针数组。二者的区别在于赋值时,前者可以直接当二维数组进行赋值,但后者要给十个一级指针,才能使后者拥有二维数组的值。

//解释一下给十个一级指针的意思,是这样的
//二维数组
for (i = 0; i < 10; i++) {
  for (j = 0; j < 10; j++) {
   a[i][j] = j;
  }
 }
 //给十个一级指针:
 int *p[10];
 for (i = 0; i < 10; i++) {
  p[i] = a[i];
 }

最后总结一下,将我们正常定义的二维数组传进方法一或方法二的函数中,或者将方法三定义的数组传进最初的(带二级指针的)函数里,是没有问题的。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:00:54  更:2022-05-07 11:00:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 3:12:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码