#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));
}
为什么这不起作用?我不能这样做?
我无法通过函数给数组赋一个维度?
我试图在互联网上找到它是如何工作的,但我发现任何东西,所以我更喜欢在这里发布以便直接回答。
谢谢!抱歉我的英语。
答案 0 :(得分:6)
函数中的array
按值传递,您在dim
中分配的内容不会影响array
中的main
,它是{\ n} {}记忆泄漏。
而是将指针传递给指针:
void dim(int **array,int n){
*array=malloc(n* sizeof(int));
}
并称之为:
dim(&array,n);
答案 1 :(得分:4)
你按值传递一个指针,所以dim没有对它做任何事情。您需要将指针传递给指向函数的指针,如下所示:
void dim(int **array, int n) {
*array=malloc(n * sizeof(int));
}
然后传递你的数组:
dim(&array, n);