动态数组的构造

作者在 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
————————————
*/
郝斌视频笔记 | 阅读 1571 次
文章评论,共0条
游客请输入验证码
最新评论