【发布时间】:2021-05-19 19:37:45
【问题描述】:
"实现函数 int *create_dyn_array(unsigned int n),它为 n 个整数分配一个 int 数组。n 在调用时作为函数的参数给出。分配数组后,函数应该读取给定数量的整数使用scanf函数从用户到数组。在读取了正确数量的整数后,该函数返回指向动态分配数组的指针。"
无论我做什么,我都会遇到分段错误。此外,由于某种原因,scanf 接受 6 个整数,即使我将 for 循环“n”更改为像 3 这样的常量??绝对神秘。我究竟做错了什么?感谢您在这里提供任何可能的帮助...
int *create_dyn_array(unsigned int n)
{
int *array = malloc(n * sizeof(*array));
int i;
for (i = 0; i < n; i++) {
scanf("%d\n", &(*array)[i]);
}
return *array;
}
void printarray(const int *array, int size) {
printf("{ ");
for (int i = 0; i < size; ++i) {
printf("%d, ", array[i]);
}
printf(" }\n");
}
int main()
{
int *array = create_dyn_array(5);
printarray(array, 5);
return 0;
}
【问题讨论】:
-
将
&(*array)[i]更改为&array[i]和return *array更改为return array。后者应该给你一个编译器的警告。 -
哦,从
scanf中删除"\n"。请参阅:Using “\n” in scanf() in C。