关于二维数组、指针的指针的,函数传参和调用的头疼问题

来源:6-5 二维数组【数组参数的正确使用姿势】

懒洋洋爱学习

2023-03-09

我觉得变长数组很好用,但变长数组只有gcc支持,在msvc中不支持,一般的编程比赛是什么编译器呢,假如就是msvc编译器,我该怎么传入二维数组的参数呢,
老师能不能单独出个视频讲一讲二维数组和指针的指针变量传参的问题,
比如我下面这个在Leetcode刷的题,它给的二维数组用指针的指针来表示,后面也没给出二维数组的行列长度,又给了个指针,,,,而且指针的指针参数调用该函数又该如何给实参,老师能不能在B站或者哪单独讲一下这方面的问题,感觉好容易出错啊
图片描述

写回答

2回答

bennyhuo

2023-03-09

例如,
grid [i]也是个数组,它的长度是 gridColSize[i]
0
0

bennyhuo

2023-03-09

这个就是说grid指向了数组的数组,他的大小是第二个参数。然后,里面的每一个数组的大小,都对应于第三个参数里面对应的位置的值。

0
4
bennyhuo
回复
懒洋洋爱学习
哦我之前没明白你的意思。你是把一个二维数组传给了一个二级指针哈。二维数组的话,还是要用一级指针去接收的。二级指针是指针的指针,例如 int **p,它一次解引用之后仍然是一个指针,因此对 p 做运算,会按照指针的空间大小去做偏移。二位数组的首地址可以理解成是一个整型指针,它与一位数组的不同之处在于空间的大小,例如 int a[n] 这里 a “指向” 了大小为 n * sizeof(int) 的内存空间,地址运算时按照 int 的大小做偏移;int b[m][n] 这里 b “指向” 了大小为 m * n * sizeof(int) 的内存空间,地址运算时按照 int 的大小做偏移。
2023-03-10
共4条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2218 学习 · 853 问题

查看课程