香辛料575 2022-04-26 19:59 采纳率: 80%
浏览 207
已结题

为什么把二维数组传递到函数中变成了一维数组?

下图是我函数的定义,第三个参数就是我传入的二维数组

img

下图是我函数的调用

img

下图是我传入的二维数组的初始化过程

img

下图是我在调试过程中发现的传入二维数组变成一维数组的情况

img

下图是传入前的二维数组,那时还是好好的

img

这是因为什么原因呢?

  • 写回答

1条回答 默认 最新

  • A-Chin 2022-04-26 20:17
    关注

    假设把二维数组 array 传进函数,可以这样写 int (*array)[10],注意这里的 *array 必须用括号括起来,否则 int *array[10] 参数相当于是声明了一个数组,该数组有10个元素,其中每个元素都是一个指向整型对象的指针。

    但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的:

    void Func(int array[ ][ ]);


    补充一点:

    二维数据和一维数组没有本质上的区别

    比如 A[M][N] 是一个M行N列的数组

    对于 A[i][j] 可以表达成 A[i*N+j]

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月13日
  • 创建了问题 4月26日

悬赏问题

  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 python的EOFError该怎么解决?
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包
  • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题