打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言编程技巧:以实例跟我学动态数组的创建及使用方法

问题提出

C语言编程中,对于普通数组的定义,如定义一个包含10int类型元素的一维数组a,我们采用下面的方式:

int a[10];

这种方式定义的数组是静态数组,其特点是定义方便,无需管理其内存的占用情况,但其缺点是一旦定义后,其数组的长度就固定了,而不能动态的改变其大小。

但是,在很多情况下,数组元素的个数我们是无法事先确定的。如定义一个数组,用来存储给定的已知数组中所有大于3的元素,很明显,这个数组的大小是不确定的,用静态数组的定义方式是不合适的,除非你定义的数组大小足够大,能包括足够多的元素,但这样会造成内存的浪费。所以,这种场合下动态数组就派上用场了。

C语言中提供了诸如内存的申请、释放等管理函数,然后结合指针可以按需动态地分配内存空间,来构建动态数组,达到有效利用计算机内存资源的手段。

基本函数说明

C语言中用于动态数组操作的函数主要包括malloccallocreallocfree等,每个函数的原型、参数意义及功能说明如下表所示:

 

  

下面通过一个例子演示动态数组的创建及使用方法。

例子说明

编写一个控制台程序,能够创建包含n个元素的动态数组,其n值由用户输入,数组里面存储的内容是n0-9之间的随机数。可以通过输入不同的n值反复创建不同个数的动态数组,当n值输入小于等于0的数值时,程序退出。

C语言实现代码

完整的C语言实现代码如下:

 

  

代码简要解释如下:

9行,定义一个指向int型的指针p,其对应的内存空间用以存储动态数组的元素。

13-14行,输入动态数组的元素个数,存储到变量n中。

16行,使用malloc函数申请能包含n个元素(n*4个字节)的地址空间,将返回的void型指针强制转换为指向int型的指针赋予p

19-22行,为动态数组中的每个元素赋值(0-9之间的随机数)。

25-29行,在控制台上打印动态数组中的每个元素。

31-36行,使用free函数释放动态内存。

程序运行结果如下图所示:

 

  

总结

C语言中关于动态数组的编程,需要注意的是,在动态数组使用完毕后,不要忘记使用free函数将动态申请的内存释放,否则会造成内存泄露。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C基础—指针/指针与动态变量/指针与数组/指针与函数
指针和数组都是C语言的精髓所在,两者有何联系区别?
C/C++语言精华《指针》
【C语言更新】指向数组的指针
简说C语言数组指针的妙用
快速上手系列-C语言
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服