动态数组

动态一维数组:

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

int main()
{
	int *a, n = 10, i;
	//动态申请n个int类型的内存空间,由指针a指示首地址
	a = (int *)calloc(n,sizeof(int));//calloc比malloc在内存只剩一些非常小的碎片的情况下效率高 
	for(i=0;i<n;i++)
	{
		a[i] = i+1;
	 } 
	 for(i=0;i<n;i++)
	 {
	 	printf("%d ",a[i]);
	 }
	 free(a);
 } 

还是要去决定动态申请多少、多大(单块)的内存空间。在这里也没有体现出增、删这样的动态变化。蛮失败的

二维动态数组:

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

int **Make2DArray(int row, int col)
//创建row行col列的二维动态数组,函数返回其首地址 
{
	int **a, i;
	a = (int **)calloc(row,sizeof(int *));
	for(i=0;i<row;i++)
	{
		a[i] = (int *)calloc(col,sizeof(int));
	}
	return a; 
 } 
 
 void Deliver2DArray(int **a, int row)
 {
 	int i;
 	for(i=0;i<row;i++)
 	{
 		free(a[i]);
	 }
	 free(a);
 }
 
 int main()
 {
 	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);
 	return 0;
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值