用malloc动态申请一个二维数组的三种方法
来源:互联网 发布:网络打印机ip地址 编辑:程序博客网 时间:2024/06/14 11:51
方法一:利用二级指针申请一个二维数组。
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- int **a; //用二级指针动态申请二维数组
- int i,j;
- int m,n;
- printf("请输入行数\n");
- scanf("%d",&m);
- printf("请输入列数\n");
- scanf("%d",&n);
- a=(int**)malloc(sizeof(int*)*m);
- for(i=0;i<m;i++)
- a[i]=(int*)malloc(sizeof(int)*n);
- for(i=0;i<m;i++)
- for(j=0;j<n;j++)
- printf("%p\n",&a[i][j]); //输出每个元素地址,每行的列与列之间的地址时连续的,行与行之间的地址不连续
- for(i=0;i<m;i++)
- free(a[i]);
- free(a);
- return 0;
- }
方法二:用数组指针形式申请一个二维数组。
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- int i,j;
- // 申请一个3行2列的整型数组
- int (*a)[2]=(int(*)[2])malloc(sizeof(int)*3*2);
- for(i=0;i<3;i++)
- for(j=0;j<2;j++)
- {
- printf("%p\n",&a[i][j]);
- } //输出数组每个元素地址,每个元素的地址是连续的
- free(a);
- return 0;
- }
方法三:用一个单独的一维数组来模拟二维数组。
- #include <stdio.h>
- #include <stdlib.h>
- void main()
- {
- int nrows,ncolumns;
- int *Array;
- int i,j;
- printf("please input nrows&ncolumns:\n");
- scanf("%d%d",&nrows,&ncolumns);
- Array=(int *)malloc(nrows*ncolumns*sizeof(int *));
- for(i=0;i<nrows;i++)
- {
- for(j=0;j<ncolumns;j++)
- {
- Array[i*nrows+j]=1;
- printf("%d ",Array[i*nrows+j]); //用 array3[i * ncolumns + j] 访问第 i, j 个成员
- }
- printf("\n");
- }
- free(Array);
- }
转载自:http://blog.csdn.net/fengxinlinux/article/details/51541003
阅读全文
0 0
- 用malloc动态申请一个二维数组的三种方法
- 用malloc动态申请一个二维数组的三种方法
- 用malloc函数申请动态二维数组
- malloc申请二维数组的方法
- 用malloc申请一个二维数组
- malloc动态申请二维数组
- 二维数组动态申请 malloc
- 一个malloc,一个free,动态申请二维数组
- malloc动态申请一个数组
- C语言用malloc函数申请二维动态数组
- C语言用malloc函数申请二维动态数组
- 动态申请二维数组两种方法
- C语言动态申请二维数组的两种方法
- malloc 申请二维数组
- 动态申请二维数组方法
- 二维数组的动态申请
- malloc二维数组的2种方法
- malloc二维数组的2种方法
- listview分页加载
- Struts2--自定义拦截器
- Qt中qDebug 的使用
- IE兼容 请求参数中文乱码或请求无效 转义与转码
- 树莓派使用mjpeg-streamer监控
- 用malloc动态申请一个二维数组的三种方法
- hdu--6103--Kirinriki
- 日历
- Step 7:Processing分形之二——Peter de Jong Attractor
- hpu 1413: StarFarming(图论,有向图反向存边)
- ImageMagick远程代码执行漏洞分析
- 【C++】【LeetCode】121. Best Time to Buy and Sell Stock
- 删除排序链表中的重复元素
- Linux内核代码风格