代码之家  ›  专栏  ›  技术社区  ›  Vikas Gautam

如何初始化c中函数的数组返回[duplicate]

  •  0
  • Vikas Gautam  · 技术社区  · 6 年前

    我试图从函数返回数组,并希望在主函数的新数组中初始化。

    我的代码在代码块中没有显示任何错误,但它也不起作用。

    这是我的密码

    #include<stdio.h>
    
    int * ReturnArray()
    {
        static int *Arr;
        int i;
        for(i=0;i<5;i++)
        {
            Arr[i] = i;
        }
    
        return Arr;
    }
    
    int  main()
    {
        int *A,i;
        A = ReturnArray();
    
        for(i=0;i<5;i++)
        {
            printf("%d",A[i]);
        }
    
        return 0;
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   PhilMasteG    6 年前

    您没有分配任何内存,因此arr指针指向任何地方。

    你可能想做的是

    int * ReturnArray()
    {
        int *Arr = malloc(5 * sizeof(int));
        int i;
        for(i=0;i<5;i++)
        {
            Arr[i] = i;
        }
    
        return Arr;
    }
    

    但是,你需要 free() 后来的记忆。