/****
该函数用malloc在c语言中实现一维和二维动态数组
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/***创建一维数组
*方式就是通过malloc在堆区分配内存空间
*/
int * Array1D(int n)
{
int *a=(int *)malloc(sizeof(int)*n);
return a;
}
/**释放一维数组在堆区的空间**/
void free_Array1D(int *p)
{
free(p);
}
/***方法一创建二维数组
*实现的方式就是首先创建行数组,然后为每一行再分配列的空间
*该函数虽说可以实现二维数组,但是实际上在内存中数据的存放位置并不是连续的
*在数组较大时,创建花费的时间略长
*/
int ** Array2D(int m,int n)
{
int i;
long start,end;
int **a;
start=clock();
a=(int **)malloc(sizeof(int)*m);
for(i=0;i<m;i++)
{
a[i]=(int *)malloc(sizeof(int)*n);
}
end=clock();
printf("方式一:初始时间是%ld,结束时间是%ld,创建时间为%ld\n",start,end,end-start);
return a;
}
/**释放二维数组在堆区的空间
*该种方式创建的数组不连续,所以需要逐个释放
**/
void free_Array2D(int *p,int row)
{
int i;
for(i=0;i<row;i++)
{
free(p[i]);
}
free(p);
}
/***方法二创建二维数组
*实现的方式是统一分配足够的空间给二维数组,然后空间的开头放行指针
*该种方法亦实现了二维数组,同时让内存空间的分配连续
*在数组较大时,创建花费的时间比方法一略短
*/
int ** Array2D2(int m,int n)
{
int i;
long start,end;
int **a;
start=clock();
a=(int **)malloc(sizeof(int)*m*(n+1));
for(i=0;i<m;i++)
{
a[i]=a+i*n+m;
}
end=clock();
printf("方式二:初始时间是%ld,结束时间是%ld,创建时间为%ld\n",start,end,end-start);
return a;
}
/**释放二维数组在堆区的空间
*该种方式创建的数组不连续,所以只需要一次性释放即可
**/
void free_Array2D2(int *p)
{
free(p);
}
int main()
{
int i,j,m=600,n=500;
int *a=Array1D(10);
int **b=Array2D(m,n);
int **c=Array2D2(m,n);
long start=clock();
int d[60][50];
long end=clock();
printf("方式三:初始时间是%ld,结束时间是%ld,创建时间为%ld\n",start,end,end-start);
free_Array2D(b,m);
/*
printf("显示地址d\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",&d[i][j]);
}
printf("\n");
}
for(i=0;i<10;i++)
{
a[i]=i;
}
for(i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
b[i][j]=i*j;
//printf("成功打印%d %d\n",i,j);
}
//printf("\n");
}
//printf("赋值结束\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",b[i][j]);
}
printf("\n");
}
printf("显示地址\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",&b[i][j]);
}
printf("\n");
}*/
system("pause");
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
ArrayTest.rar (24个子文件)
ArrayTest
ArrayTest
ArrayTest.vcxproj.filters 958B
ArrayTest.vcxproj.user 143B
Debug
link.read.1.tlog 5KB
vc100.pdb 76KB
link.command.1.tlog 2KB
ArrayTest.lastbuildstate 68B
ArrayTest.exe.intermediate.manifest 381B
CL.write.1.tlog 708B
cl.command.1.tlog 1KB
arraytest.obj 11KB
mt.read.1.tlog 2KB
ArrayTest.log 3KB
mt.write.1.tlog 554B
CL.read.1.tlog 15KB
vc100.idb 235KB
mt.command.1.tlog 914B
link.write.1.tlog 1KB
arraytest.c 3KB
ArrayTest.vcxproj 3KB
ArrayTest.sln 894B
Debug
ArrayTest.exe 28KB
ArrayTest.pdb 355KB
ArrayTest.ilk 306KB
ArrayTest.suo 13KB
共 24 条
- 1
资源评论
yutianzuijin
- 粉丝: 1323
- 资源: 28
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功