作者在 2011-09-08 16:27:13 发布以下内容
/*
时间:2011年9月8日16:21:28
目的:学习构造构造数组的方法,了解动态数组使用上与静态数组一样简单,并体会动态数组的优点
备注:优点包括
1.动态数组的长度可由程序员输入,不必事先指定
2.动态数组的内存可由程序员手动分配和释放
3.动态数组的长度可由程序员手动增长或缩短
4.动态数组方便进行跨函数使用(这个以后在学)
*/
# include <stdio.h>
# include <malloc.h>
int main (void)
{
int a[5]; //这是构造静态一维数组,如果int型占4个字节,所以系统自动分配了固定20个字节的内存空间,每4个字节被当做一个int变量来使用
int len; //构造动态数组的一个好处是可以由程序员自己手动输入数组的长度,不必事先指定
int * pArr;
int i;
int len2;
printf("请输入你要存放的元素个数\n");
scanf("%d",&len);
pArr = (int *)malloc(sizeof(int)*len); //动态的构造了一个数组,类似于int pArr[len],该数组的数组名是pArr,(int*)确定了每个元素都是int型,数组的长度是len,内存空间的长度是len*sizeof(int)
//pArr与静态数组中的a一样,是第一个元素的地址,所以是int*型的
printf("对动态构造的数组进行赋值\n"); //对动态数组赋值与对静态数组赋值的方法没有区别
for (i=0; i<len; ++i)
scanf("%d",&pArr[i]);
printf("输出动态数组的内容\n"); //输出的方法也没有区别
for (i=0; i<len; ++i)
printf("%d\n",pArr[i]);
printf("请输入你要修改的元素个数\n");
scanf("%d",&len2);
pArr = (int *)realloc(pArr,sizeof(int)*len2); //构造动态数组的一个好处是可以由程序员自己手动修改数组的长度,可增长也可以缩短,不涉及修改的元素会保留不变
printf("输出修改后动态数组的内容\n");
for (i=0; i<len2; ++i)
printf("%d\n",pArr[i]);
free(pArr); //释放掉动态分配的数组
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入你要存放的元素个数
5
对动态构造的数组进行赋值
1 2 3 4 5
输出动态数组的内容
1
2
3
4
5
请输入你要修改的元素个数
4
输出修改后动态数组的内容
1
2
3
4
Press any key to continue
————————————
*/
时间:2011年9月8日16:21:28
目的:学习构造构造数组的方法,了解动态数组使用上与静态数组一样简单,并体会动态数组的优点
备注:优点包括
1.动态数组的长度可由程序员输入,不必事先指定
2.动态数组的内存可由程序员手动分配和释放
3.动态数组的长度可由程序员手动增长或缩短
4.动态数组方便进行跨函数使用(这个以后在学)
*/
# include <stdio.h>
# include <malloc.h>
int main (void)
{
int a[5]; //这是构造静态一维数组,如果int型占4个字节,所以系统自动分配了固定20个字节的内存空间,每4个字节被当做一个int变量来使用
int len; //构造动态数组的一个好处是可以由程序员自己手动输入数组的长度,不必事先指定
int * pArr;
int i;
int len2;
printf("请输入你要存放的元素个数\n");
scanf("%d",&len);
pArr = (int *)malloc(sizeof(int)*len); //动态的构造了一个数组,类似于int pArr[len],该数组的数组名是pArr,(int*)确定了每个元素都是int型,数组的长度是len,内存空间的长度是len*sizeof(int)
//pArr与静态数组中的a一样,是第一个元素的地址,所以是int*型的
printf("对动态构造的数组进行赋值\n"); //对动态数组赋值与对静态数组赋值的方法没有区别
for (i=0; i<len; ++i)
scanf("%d",&pArr[i]);
printf("输出动态数组的内容\n"); //输出的方法也没有区别
for (i=0; i<len; ++i)
printf("%d\n",pArr[i]);
printf("请输入你要修改的元素个数\n");
scanf("%d",&len2);
pArr = (int *)realloc(pArr,sizeof(int)*len2); //构造动态数组的一个好处是可以由程序员自己手动修改数组的长度,可增长也可以缩短,不涉及修改的元素会保留不变
printf("输出修改后动态数组的内容\n");
for (i=0; i<len2; ++i)
printf("%d\n",pArr[i]);
free(pArr); //释放掉动态分配的数组
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入你要存放的元素个数
5
对动态构造的数组进行赋值
1 2 3 4 5
输出动态数组的内容
1
2
3
4
5
请输入你要修改的元素个数
4
输出修改后动态数组的内容
1
2
3
4
Press any key to continue
————————————
*/