码迷,mamicode.com
首页 > 编程语言 > 详细

一维动态数组和二维动态数组的创建和使用

时间:2017-06-29 17:46:54      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:include   大小   释放   sig   循环   signed   pos   ret   print   

#include<stdio.h>
#include<malloc.h>
void main(){


int *a,n=10,i;
/*
calloc()函数的原型是:(void *)calloc(unsigned n,unsigned size)
calloc()函数用于向系统动态申请n个,每一个占sizege字节的内存单元,函数返回值为所申请的内存空间首地址
malloc和calloc主要差别在于,当系统的内存仅仅剩下一些很小的碎片时。用calloc函数设计的动态数组的时间效率优于
用malloc函数设计的动态数组的时间效率
*/
//动态申请n歌int型的的内存空间由指针a指示首地址
a=(int *)calloc(n,sizeof(int));
for(i=0;i<n;i++){

a[i]=i+1;//数组元素赋值
}


for(i=0;i<n;i++){

printf("%d  ",a[i]);//数组元素输出
}


printf("\n");
free(a);//动态释放指针a所指向的n歌内存空间

}







二维动态数组的创建和使用

#include<stdio.h>
#include<malloc.h>




//创建二维动态数组的函数
int **Make2DArray(int row,int col){


//创建row行col列的二维动态数组,函数返回其首地址
int **a,i;
//动态申请row个int类型的内存空间。有a指示
a=(int **)calloc(row,sizeof(int *));
//循环row次,动态申请col个int类型的内存空间,由a[i]指示
for(i=0;i<row;i++){

a[i]=(int *)calloc(col,sizeof(int));
}


return a;
}






//释放二维动态数组的函数
void Deliver2DArray(int **a,int row){
//释放二维动态数组a的内存空间,row为数组的行数
int i;
for(i=0;i<row;i++){

free(a[i]);
}


free(a);
}






void main(){


/*
int *a,n=10,i;

calloc()函数的原型是:(void *)calloc(unsigned n,unsigned size)
calloc()函数用于向系统动态申请n个,每一个占sizege字节的内存单元,函数返回值为所申请的内存空间首地址
malloc和calloc主要差别在于,当系统的内存仅仅剩下一些很小的碎片时,用calloc函数设计的动态数组的时间效率优于
用malloc函数设计的动态数组的时间效率

//动态申请n歌int型的的内存空间由指针a指示首地址
a=(int *)calloc(n,sizeof(int));
for(i=0;i<n;i++){

a[i]=i+1;//数组元素赋值
}


for(i=0;i<n;i++){

printf("%d  ",a[i]);//数组元素输出
}


printf("\n");
free(a);//动态释放指针a所指向的n歌内存空间
*/






//二维动态数组
int i,j,c;
int row=3,col=4,**a;
a=Make2DArray(row,col);
c=1;
for(i=0;i<row;i++){

for(j=0;j<col;j++){

a[i][j]=c;//数组元素赋值
c++;
}
}






for(i=0;i<row;i++){

for(j=0;j<col;j++){

printf("%5d",a[i][j]);//显示数组元素
}


printf("\n");
}






Deliver2DArray(a,row);
/*
realloc()函数的原型是:(void *)realloc(void *p,unsigned size)
realloc()函数的功能是。将指针p所指向的已分配内存区的大小改为size,函数返回新分配内存区
的首地址。size既能够比原来分配的内存区大,也能够比原来分配的内存区小。
新分配的内存区中原样保存原内存区的数据值。当新分配的内存区设为size2小于原分配的内存区size1时
新分配内存区中原样保存原分配内存区中前size2个数据值
*/

}
















一维动态数组和二维动态数组的创建和使用

标签:include   大小   释放   sig   循环   signed   pos   ret   print   

原文地址:http://www.cnblogs.com/lytwajue/p/7094672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!