我想在函数内部分配一个数组,并且也能够在函数外部使用指向该数组的指针。我不知道我的代码有什么问题
#include <stdio.h>
#include <stdlib.h>
void alloc_array (int **v, int n)
{
*v=(int *)calloc(n,sizeof(int));
printf ("the address of the array is %p",v);
}
void display_pointer (int *v)
{
printf ("\n%p",v);
}
int main()
{
int *v;
alloc_array(&v,3);
display_pointer(v);
return 0;
}
我希望在两个 printf
中得到相同的地址,但事实并非如此。我的错误是什么?
void alloc_array (int **v, int n)
{
*v = calloc(n,sizeof(int));
printf("the address of the array is %p", *v);
// ----^
}
请注意我的 printf
调用中的额外星号。
此外,不要强制转换 malloc
/calloc
的返回值。
我是一名优秀的程序员,十分优秀!