返回带函数参数的动态数组指针时遇到问题。
#include <stdio.h>
#include <stdlib.h>
void createArray(int *ptr, int n)
{
ptr = malloc(n * sizeof(int));
for(int i = 1; i <= n; ++i)
{
*(ptr + (i - 1)) = i*i;
}
}
int main() {
int *array = NULL;
int n = 5;
createArray(array, n);
for(int i = 0; i < n; ++i)
{
printf("%d", array[i]);
}
return 0;
}
当I从1到n时,我必须用ii填充我的数组。我没有得到任何错误或警告。只有关于分段错误的消息。 过程结束,退出代码为139(被信号11中断:SIGSEGV)*
2条答案
按热度按时间8i9zcol21#
内存必须在调用函数中分配,而不是在被调用函数中分配。
lndjwyie2#
您可以通过函数参数更改指针,如下所示:
记住这样调用函数:createArray(&数组,n);