c语言中怎样用代码添加数组成员数

就像易语言中的加入成员()可以随意添加数组的成员数,不必担心数组大小问题。我想知道c语言中能不能实现。谢谢。... 就像易语言中的 加入成员() 可以随意添加数组的成员数,不必担心数组大小问题。
我想知道c语言中能不能实现。谢谢。
展开
 我来答
风若远去何人留
推荐于2018-05-06 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部

C语言的数组有动态数组和静态数组两种。

1 静态数组。

对于静态数组,无法新增加数组成员数量。

所以一定要最初始定义足够大的数组,然后可以用一个整型变量维护数组中现有成员个数,再动态增加实际成员个数。

比如

int a[1000];
int n = 0;
while(scanf("%d",&a[n]) != EOF) n ++;

这样的代码就可以实现增加数组成员数的类似效果。n为实际成员个数。


2 动态数组。

动态数组是可以随时改变数组成员个数的。不过为了确定当前数组个数,需要用两个整型变量来保存最大成员数,和已有成员数,这样就可以在不够的时候进行扩大。

int n = 0, size = 100; //n为当前元素个数,size为数组大小,初始为100.
int *a = NULL;//数组指针
a = (int *)malloc(sizeof(int) * size); // 初始分配100个元素。
while(scanf("%d",&a[n]) != EOF) 
{
    n++;
    if(n >= size)//空间不足。
    {
            size+=100;//增加100个元素空间。
            a = (int *)realloc(sizeof(int)*size, a);//重新分配空间。
    }
}
cdyzxy
推荐于2017-12-16 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3763万
展开全部
这个可以,但为使用安全只好自己编一段程序来维护了.
现成的没有简单调用的函数完成这个.
可以根据数组的容量,如果发现超出原尺寸用realloc重新申请更大的内存.
更多追问追答
追问

realloc貌似只能重新申请比原来的内存要小的内存,重新申请的内存不能大于原来的内存。。。

追答
是这样的:realloc先向堆申请你新的内存,如果申请成功,则将原来那块内存的内容复制到新申请的内存中,然后释放原来那块内存,如果申请失败则返回失败,什么也不做。
如果你申请的内存小于原来的内存尺寸,那么在复制数据时必然会被截尾,导致数据丢失。于是,只要不怕数据丢失,新申请的尺寸可以不考虑与原数据区尺寸的关系。
你提供的这段函数说明不知道是哪个编译器的,与标准c的处理不同。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友69740a849
2013-02-24 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:149
采纳率:100%
帮助的人:84.9万
展开全部
c语言定义数组的时候要定义数组大小,只要你把这个数组大小定义的足够大(不会超过实际应用所需),就可以。
追问
这个我知道,不过如果数组定义得太小,就有可能不够用。太多用不了又浪费内存。。
追答
根据实际需要来确定,做软件都需要先进行需求分析,你可以把数组长度定义为一个常量,当实际需求改变时只需要在程序中修改这个常量就可以改变数组的长度。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ycsxm
2013-02-24 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1.4万
采纳率:0%
帮助的人:7964万
展开全部
C语言为了执行快速和效率,已定义好的数组是不能变动元素个数的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bjhbbjhb123
2013-02-24
知道答主
回答量:2
采纳率:0%
帮助的人:3010
展开全部
用malloc可以啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式