一个c语言的问题 关于数组的

来源:百度知道 编辑:UC知道 时间:2024/09/23 04:16:02
问题1
一个int数组,他的元素最多有多少个
如int[1000000000000]可以么?
问题2
还有就是如何动态申请一个int数组元素,然后用scanf("%d")来赋值,然后再动态申请一个int数组元素,一直下去
请举个例子说明,简单点的 谢谢

1.理论上可以~ 当然是要定义全局或动态定义 定义在堆里就可以

2.不知道为什么要一个一个分配~会慢的
int* p1 = (int*)malloc(1);
scanf("%d",p1);
int* p2 = (int*)malloc(1);
scanf("%d",p2);

我也是一个C语言新手答案仅供参考!

1.完全可以,只要你的内存足够想见多大的数组都可以.

2.想要用C分配动态数组.有一个比较简单的办法就是,两个指针和malloc()函数配合使用.

先解释一下,由于下面代码是在源代码中截下来的.所以,我这里先说一下一些变量的定义!

ps1和ps2为两个指向char的指针
leng,i,j为int变量(这里为初始化为0)
LEN是一个宏他等于10(就当他是一个整型常量10)

i的值是根据输入的字符个数的多少在不断的增加的!

if(i==leng)
leng+=LEN;
ps1=(char*)malloc(leng);
if(ps1==NULL)
{
printf("分配内存失败!!");
abort();
}
if(ps2==NULL)
ps2=ps1;
else
{
for(j=0;j<i;j++)
*(ps1+j)=*(ps2+j);
ps2=ps1;
ps1=NULL;
}
此段代码用来计算储存字符串需要多少内存.当需要储存的字符串,大于内存的大小时.就重新分配一块内存将原来的值复制到新内存上.达成可以根据字符串程度分配适当内存的目的!!