C语言中没有专用来申请二维数组的库函数,只能手动申请内存来构建二维数组,通常的方法如下:

(1)先申请二维数组中的所有一维数组指针之和大小的内存;

(2)循环申请一维数组大小的内存。

int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes){
/* 申请二维数组,其实这里只申请了大小为二维数组中所有一维数组的指针的总和的内存,
numSize代表了二维数组中所有一维数组的个数,也即二维数组的行数 */int **ans = (int **)malloc(sizeof(int*)*numsSize);  for (int i = 0; i < total; i++) {ans[i] = (int*)malloc(sizeof(int) * 3);  //这里申请二维数组中的一维数组,此处假设一维数组大小为3ans[i][0] = nums[i];  //为二维数组赋值ans[i][1] = nums[left];ans[i][2] = nums[right];    }return ans;
}

以上是在一个函数中申请二维数组,然后将其传出。假如要给一个函数传递二维数组,则需要把二维数组的指针,以及其行、列的大小都传递给对方。如下

int threeSum(int** nums, int inputSize, int* inputColSize);int main()
{int **ans = (int **)malloc(sizeof(int*)*numsSize);int inputSize = 3;int total = 2;/* 以如下二行三列的数组为例 */for (int i = 0; i < total; i++) {ans[i] = (int*)malloc(sizeof(int) * inputSize); }/* 这时需要申请一个数组来传递行和列的大小 */int *inputColSize = (int *)malloc(sizeof(int) * inputSize);inputColSize[0] = 2;inputColSize[1] = 3;threeSum(ans, inputSize, inputColSize);}

C语言二维数组内存申请及初始化方法相关推荐

  1. C语言二维数组元素的多种表示方法小结

    C语言二维数组元素的多种表示方法小结 昨天,一个小可爱问我,为何函数中,数组可以改变主函数中的值,比如b[i],就可以改原来数组中的值.其实b[i] 等价于 *(b + i)也是通过地址间接更改的,小 ...

  2. C语言二维数组的定义、初始化、赋值

    二维数组的定义 二维数组定义的一般形式是: dataType arrayName[length1][length2]; 其中,dataType 为数据类型,arrayName 为数组名,length1 ...

  3. C语言 二维数组的定义、初始化以及数组元素的引用

    二维数组定义的一般形式为: 类型说明符 数组名[常量表达式 ][常量表达式] 例如:float a[3][4],b[5][10]; 是定义a为3行4列的数组,b为5行10列的数组. 注意不可以写成fl ...

  4. qt 二维数组初始化_C语言二维数组的定义、初始化、赋值

    上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本节只介绍 二维 ...

  5. c语言动态的申请矩阵存储空间,C语言中二维数组如何申请动态分配内存

    C语言中二维数组如何申请动态分配内存: 使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小 #include #include int main() { int **a; int i ...

  6. C++二维数组动态申请内存

    好久没用C++刷题了,今天早上刷了几条题,感觉很陌生了.怪我,大二下实在太颓废了,没啥作为. 今天更新个关于c++二维数组内存申请的问题,当初作为菜鸟初学指针的时候,还是在这方面有点搞不通的.今天用到 ...

  7. 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )

    文章目录 一.验证二维数组内存是线性的 1.打印二维数组 2.以一维数组方式打印二维数组 3.打印二维数组值和地址 二.完整代码示例 一.验证二维数组内存是线性的 验证二维数组内存是线性的 : 验证方 ...

  8. 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 )

    文章目录 一.二维数组内存大小计算 二.二维数组内存大小意义 一.二维数组内存大小计算 给定一个二维数组 : 该 二维数组 中有 444 个 一维数组 , 每个一维数组有 101010 个 char ...

  9. C语言 | 二维数组

    C语言二维数组的定义 一般形式 类型说明符 数组名[常量表达式][常量表达式]int a[10][6],b[3][4]; 用矩阵形式表示二维数组,是逻辑上的概念,能形象地表示出行列关系,而在内存中,各 ...

最新文章

  1. 误删Windows文件后恢复技巧
  2. 【tensorflow】Sequential 模型方法
  3. OpenResty+lua+GraphicsMagick生成缩略图
  4. url 特殊字符 传递参数解决方法
  5. python职业发展方向_59秒看懂IT运维的发展方向及职业规划
  6. MapXtreme2004 连接oracle spatial的问题
  7. R读取MySQL数据出现乱码,解决该问题的方法总结
  8. tkinter显示rtf文件
  9. 【大数据公司研究】第三方大数据公司是如何赚钱的,以个推公司为例
  10. 微软服务器安装显卡驱动,微软虚拟机显卡及驱动的设置
  11. ros2 foxy 报错缺少“diagnostic_updater“,By not providing “Finddiagnostic_updater.cmake“ in CMAKE_MODULE_P
  12. 日历控件CalendarView的使用
  13. matlab求二阶微分方程的通解,二阶常微分方程matlab的数值解和解析解分析总报告.ppt...
  14. 百度云:当AI遇到视频
  15. 严版数据结构(第一章)
  16. 用C语言给孩子水果英语早教,幼儿英语早教水果,12种水果怎么读英语?
  17. (计算机组成原理)RISC与CISC的区别
  18. java的Date类的getYear(),getMonth()等函数过时
  19. 一键领取饿了么手气最佳红包
  20. html5游戏发行,UC游戏成国内最大HTML5游戏发行平台

热门文章

  1. CC00015.kylin——|HadoopOLAP_Kylin.V15|——|Kylin.v15|Cube优化|Cuboid剪枝优化|
  2. 天球坐标系、地球坐标系与地球自转有无关系?哪一种便于描述地面观测站的空间位置?哪一种便于描述人造地球卫星的位置?总结GNSS定位的时空基准? GPS卫星定位中,时间系统有何重要意义?
  3. html5 td上下居中显示,css表格垂直居中怎么设置?
  4. MES与ERP的集成
  5. 实战图解 交易中如何运用RSI指标
  6. 基于Web的期刊稿件管理系统
  7. 华三服务器HDM打不开网页,服务器HDM无法登录
  8. 老黄历java_JQ实现程序员老黄历
  9. android 获取 imei号码
  10. 2012年9月 吉林大学计算机相关专业招聘会信息汇总