LeetCode 73. matrix置0(文章重点是怎样打印二维数组)
前记刷LeetCode一个二维矩阵置0的问题时题解给的setZeros函数实现很简单一看实现就明白了。在写一个main函数想打印验证下这个setZeros函数效果时却费了九牛二虎之力。搞出来的效果如下打印函数实现两个for循环遍历打印matrix。主要是入参matrix的类型是int**voidprintMatrix(int**matrix,intm,intn){for(inti0;im;i){for(intj0;jn;j){printf(%d ,matrix[i][j]);}printf(\n);}}main函数malloc开始想的简单了以为定义一个二维数组取数组地址传给setZeroes函数就行殊不知置零函数改的是二维数组内存。所以得先malloc一块二维数组内存然后才能调用置零函数。虽然星多但是也有规律变量matrix类型int**先(int**)强转malloc出来的内存。malloc内是一个矩阵行 * sizeof(int)即3个指向 int一维数组的内存。变量matrix[k]类型int*先int*)强转malloc出来的内存。malloc内是一个矩阵列 * sizeof(int)即把一维数组又给开辟列数的内存。int**matrix(int**)malloc(3*sizeof(int*));for(intk0;k3;k){matrix[k](int*)malloc(3*sizeof(int));}malloc分配完后main最后还要记得free下内存防止内存泄漏。free从内往外先free(matrix[k])再free(matrix)。for(intk0;k3;k){free(matrix[k]);}free(matrix);最终的打印效果就是开头给的截图。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2583111.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!