问题描述
众所周知,有两种类型的数组,静态数组和动态数组。静态数组大小是在编译时定义的,动态数组大小是使用malloc定义的。在这段代码中,您可以看到我没有使用malloc,而是在处理动态数组,并且所有数组的操作都在运行。
int main()
{
int capofarr,sizeofarr,i,choice,choice2,ele,pos,choice3;
printf("enter the size of array:");
scanf("%d",&capofarr);
int arr[capofarr];
printf("Enter the element that you want to store in array:");
scanf("%d",&sizeofarr);
if(capofarr>=sizeofarr)
{
for(i=0;i<=sizeofarr-1;i++)
{
printf("Enter value of arr[%d]=",i+1);
scanf("%d",&arr[i]);
}
解决方法
是的,所有操作都在运行,但是malloc的目的是分配所需的内存量,以免浪费内存。但是在您的情况下,我的条件(capofarr> sizeofarr)会浪费内存,即。浪费的内存大小将为(capofarr-sizeofarr)* sizeof(a [0])。如果我错了,请纠正我。谢谢