易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
C/C++动态分配二维数组
一:C中动态分配二维数组(1)内存不连续的分配
#include <stdio.h>
#include <malloc.h>
#define M 3
#define N 3
// 这样在同一个数组内是连续分配的,但是实际上是不连续分配的
int main(int argc , char*argv[])
{
int i ,j ;
int **matric ;
matric = (int**)malloc(M*sizeof(int*));
for(i = 0 ; i<M ; i++)
*(matric+i) = (int*)malloc(N*sizeof(int));
for(i = 0 ; i<M ; i++)
for(j=0 ; j<N ; j++)
{
printf("Please entry the %d value: ",i*N+j);
scanf("%d",(*(matric+i)+j));
}
for(i = 0 ; i<M ; i++)
{
switch(i)
{
case 0 :
printf("第一行数组元素: ");
break ;
case 1:
printf("第二行数组元素: ") ;
break ;
case 2:
printf("第三行数组元素: ") ;
break;
}
for(j = 0 ; j<N ; j++)
{
printf("The values of %d elements are:%d ",i*N+j,*(*(matric+i)+j));
printf("The pointer position is:%x ",(*(matric+i)+j)) ;
}
}
for(i = 0 ;i<M ; i++)
{
free(*(matric+i));
}
free(matric) ;
return 0 ;
}
运行结果为:可以明确看出内存是不连续的。
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图