在 C 函数中传递两个指针参数时出现段错误

SegFault when passing two pointer parameter in a function in C

我在 GNU/Linux 环境上使用 GCC 编译器 9.3.0,使用 C17。

由于无法向所有人展示,因此我必须删除代码,请理解。

如果我从主函数中删除 largest_lowest 调用,则没有段错误如果我添加该行,则存在段错误(核心已转储)

SetData 是一个简单的函数,仅用于设置数据。仅此而已,完美运行。

Error(When compiling)-> expected ‘point **’ but argument is of type ‘point (*)[7]’

当我运行程序出现段错误(核心已转储)时。

不能将多维数组传递给采用指针到指针的函数。特别是因为在这种情况下,您打算传递一维数组。修复:

int largest_lowest(point *a[], int len) -> point a[],
largest_lowest(&a, 7); -> largest_lowest(a, 7);

另外,请注意类似函数的宏 INIT_POINT_ARRAY 可怕的做法 ,您 必须 摆脱它.绝对没有理由你应该在那里有一个宏。