二级指针如何分配动态内存并赋值
来源:互联网 发布:吉他鼓点伴奏软件 编辑:程序博客网 时间:2024/05/17 23:36
先分配行 p = malloc(sizeof(int*)*m) ,再逐行分配列 p[i] = malloc(sizeof(int) * n)
//二级指针如何分配动态内存并赋值#include <stdio.h>#include <stdlib.h>int main(void){ int **p = NULL; //最好是显式初始化这个二级指针 以防不测 int m, n, i, j; printf("请输入数组的行数和列数:\n例如格式:5,6 :代表5行6列\n"); scanf("%d,%d", &m, &n); p = malloc(sizeof(int*)*m); //这里没必要强制类型转换 p已定义成int** if(!p) { //作个简单的malloc是否成功的检测 printf("malloc失败!\n"); return 1; //失败后直接退出程序 } for(i = 0; i < m; i++) { p[i] = malloc(sizeof(int) * n); if(!p[i]) { //还是要检测内存开辟是否成功 printf("i = %d\tmalloc失败!\n", i); return 1; //失败后直接退出程序 } } //这里也没必要强制类型转换 p[i]默认就是int* printf("请输入数组的%d行和%d列的数组数值\n",m,n); for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { scanf("%d", &p[i][j]); //这里要用& 因为p[i][j]是int型 //或者你改成 *(p + i) + j //scanf("%d", *(p + i) + j); } } printf("将%d行和%d列的数组数值打印出来\n",m,n); for(i = 0; i < m; i++) { for(j = 0; j < n; j++) { printf("%d ", p[i][j]); } printf("\n"); } for(i = 0; i < m; i++) free(p[i]); //由里层开始释放开辟的内存 free(p); //只要malloc了就别忘了free return 0;}
http://bbs.bccn.net/thread-440957-1-1.html
非常感谢 longwu9t 的无私奉献!
阅读全文
0 0
- 二级指针如何分配动态内存并赋值
- 二级指针动态内存分配
- 动态内存分配涉及到的二级指针,传递相关
- C语言编程基础-16动态内存分配 二级指针做形参 函数指针
- Day14、枚举、联合、二级指针、回调函数、动态内存分配
- 动态内存分配和指针
- 动态内存分配和指针
- Linux 下C语言学习(六)——二级指针、动态内存分配,函数指针与文件操作
- 使用二级指针分配和释放内存示例 malloc(), free()
- 二级指针和内存分配问题 形参和实参
- 子函数中的内存分配(二级指针的应用)
- 动态内存分配如何工作?
- 二重指针分配矩阵内存并初始化
- 地址、指针与动态内存分配
- 动态内存分配以及指针与const
- 动态内存分配与野指针
- C语言 指针及动态内存分配
- c语言指针与动态内存分配
- 从零开始开发Android版2048 (十)
- 趕快升級你的裝備去買V R
- C++风格_Google特色
- 安装配置maven时,使用mvn命令,报出mvn不是内部或外部命令解决方法
- 记一次揪心的MySQL数据恢复过程
- 二级指针如何分配动态内存并赋值
- 斯坦福大学公开课-编程方法学-第四节(计算机科学发展史)
- RecyclerView为每个item添加点击事件
- strlen(),strcpy(),strncpy(),strcmp(),memcpy(),memncmp()函数
- 开通博客随笔
- C#日期输出格式记录
- 坚持#第217天~零基础自学云计算基础语言应用26~30节
- 双系统win+ubuntu14.04使用360随身wifi 3代
- 7-77 列出连通集(25 分)