将数组传递给c中的函数

Jos*_*eau 4 c arrays prototype function

我编译代码时出现gcc错误.错误是关于"传递参数1''print_path'使得指针来自整数而没有强制转换".

这是我的函数原型:

void print_path(int previous[], int desired_node_index);
Run Code Online (Sandbox Code Playgroud)

这是我的功能:

void print_path(int previous[], int desired_node_index)
{
  if( previous[desired_node_index] != -1 )
    print_path( previous[desired_node_index] );
  printf("-> %d ", previous[desired_node_index]);
}
Run Code Online (Sandbox Code Playgroud)

这是我调用我的功能的地方:

print_path(previous, dest_index);
Run Code Online (Sandbox Code Playgroud)

我显然错误地传递了它,否则我正在做一些关于如何将数组传递给函数的错误.有帮助吗?

多谢你们!

kar*_*lip 7

这显然是一个递归函数.注意,print_path()需要2个参数:第一个是int数组,第二个是该数组内部位置的索引.

打电话给:

print_path( previous[desired_node_index] );
Run Code Online (Sandbox Code Playgroud)

是绝对错误的(除非你重载了这个函数),因为它需要2个参数而你只传递一个参数.你应该做的是:

print_path( previous, desired_node_index );
Run Code Online (Sandbox Code Playgroud)

您在此函数中似乎缺少的是增加/减少索引变量的操作,否则您将始终在数组中打印相同的位置.

如果不知道你想要做什么,你有可能想要这样做:

print_path( previous, previous[desired_node_index] );
Run Code Online (Sandbox Code Playgroud)

  • 嗯,你知道,有时候这个新手会说"C",但他们正在使用C++编译器并在我们背后做这些事情. (2认同)