为什么我们需要在c中使用malloc而不是malloc,所以我们可以在运行时完成

问题描述

众所周知,有两种类型的数组,静态数组和动态数组。静态数组大小是在编译时定义的,动态数组大小是使用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])。如果我错了,请纠正我。谢谢