使用函数在C中动态调整大小的数组

exs*_*ake 0 c memory arrays dynamic

#include <stdio.h>
#include <stdlib.h>

void dim(int*,int);
int main()
{
    int *array ;
    int n,i;
    scanf("%d",&n);
    dim(array,n);

    for(i=0;i<n;i++)
        scanf("%d",&array[i]);
    for(i=0;i<n;i++)
        printf("%2d",array[i]);
}

void dim(int *array,int n){
    array=malloc(n* sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我不能这样做?

我不能通过函数给数组赋一个维度?

我试图在互联网上找到它是如何工作的,但我发现任何东西,所以我更喜欢在这里发布它以获得直接答案.

谢谢!抱歉我的英语

Yu *_*Hao 6

array在功能由值,你分配什么传入dim不影响arraymain,它的内存泄漏.

而是将指针传递给指针:

void dim(int **array,int n){
    *array=malloc(n* sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)

称之为:

dim(&array,n);
Run Code Online (Sandbox Code Playgroud)