首先 严格来说 不可能出现任意长度。 内存是有限的 超出一定长度后,不可能存的下,虽然这个值可能是超级大的,但总有限度。
其次,所谓的任意长度,其实就是可变长数组。
那么,在事先不知道数组规模下,就要靠输入,来确定数组大小了。
重点在于,要开辟多大的数组来存
一般有这么几种情况
1 直接开一个足够大的。 比如 虽然不知道有多大,但最大不超过1000个,那就可以直接开个1000元素的数组。
2 动态分配, 使用malloc动态分配内存。
当出现可能的不够情况,用realloc重新分配。
#include
#include
int main()
{
int i=0,n=1;
int *a;
a=malloc(n*sizeof(int));
do
{
scanf("%d",&a[i++]);
realloc(a,++n*sizeof(int));
}while(getchar(a[i-1])!='\n');
for (i=0;iprintf("%d ",a[i]);
printf("\n");
}
办法不少,正宗的是用链表。