VC++数组不定义大小不行吗

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:14:26
请高手指教,多谢,急用!
我先产生一系列数,但长度不定
之前定义int a[]={0}
我以为这样可以无限长度,可发现其实length(a[])=1
怎么办啊
有什么办法啊
还是用数据结构,链表啊???
多谢多谢,新手
那int a[]可以吗?
这时候是无限长度吗??
太感谢了

使用你这种定义方式,必须规定长度.
不定长就要用到链表,或是先做一个长度为N的,如果要再增加,检测到要不够用时,再重新申请一块空间.

可以用指针,当知道长度是,再申请内存

========================
#include<stdio.h>
#include <malloc.h>
#include <memory.h>

void main()
{
int *num,n;
int i;
printf("Please input the number:");
scanf("%d",&n);
num = (int *)malloc(sizeof(int)*n);//申请内存
if(num != NULL)//如果为NULL证明申请内存不成功,一般都会成功
{
memset((void*)num,0,sizeof(int)*n);//初始化为0
for(i=0; i<n; i++)//对内存的操作不要越界
*(num+i) = i;
for(i=0; i<n; i++)
printf("%d,",*(num+i));
free(num);//一定要free
}
}

不行.
只要是A[]的形式,必须指定内存单元大小.而且大小必须是固定的,是变量都不行.
比如
int L=9;
char A[L];
也是错误的.
办法:
char* A;
malloc(A,sizeof(char),9);
当然定义为char A[10000];也没问题,内存会自动分配

list vector
传统的数组必须定义大小。

那int a[]可以吗?
这种方式,后边必须把所有元素指定
比如int a[]={