【发布时间】:2021-01-24 07:45:54
【问题描述】:
我需要这个功能来将动态分配的数组和 idx 传递给一个函数并为其赋值。当我尝试分配代码中提到的值 2 时,会发生段错误。这有什么问题?我该如何解决?
#include <stdio.h>
#include <stdlib.h>
void fucn(int *int_ptr, int **arr_ptr)
{
*arr_ptr[*int_ptr] = 1;
(*int_ptr)++;
//*arr_ptr = *arr_ptr + 1;
*arr_ptr[*int_ptr] = 2;
}
int main(int argc, char const *argv[])
{
int *array = calloc(4, sizeof(int));
int i = 0;
fucn(&i, &array);
printf("%d%d", array[0], array[1]);
free(array);
return 0;
}
【问题讨论】:
-
void fucn(int *int_ptr, int **arr_ptr)-->void fucn(int *int_ptr, int *arr_ptr),fucn(&i, &array);--fucn(&i, array);,你想要一个指针,而不是指向指针的指针。并照顾阅读障碍fucn-->func:) -
谢谢,它正在工作!明白了。
-
取消对指针的引用会产生一个指针,您不能为该指针分配一个整数,否则您会覆盖传递的指针,并且它会在稍后再次访问时崩溃。
-
@DavidRanieri 那么为什么在我分配值 1 时没有发生段错误,只有在我尝试分配值 2 时才会发生段错误。
-
这就是为什么我说 然后尝试再次访问时崩溃 稍后
标签: c segmentation-fault dynamic-memory-allocation pass-by-pointer