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)
我显然错误地传递了它,否则我正在做一些关于如何将数组传递给函数的错误.有帮助吗?
多谢你们!
这显然是一个递归函数.注意,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)