编译代码时出现gcc错误。错误是关于“传递参数1''print_path'使得指针来自整数而没有强制转换”。
这是我的函数原型:
void print_path(int previous[], int desired_node_index);
这是我的功能:
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]);
}
这是我调用我的功能的地方:
print_path(previous, dest_index);
我显然错误地传递了它,否则我正在做一些关于如何将数组传递给函数的错误。有什么帮助吗?
谢谢你们!
答案 0 :(得分:7)
这显然是递归函数。请注意print_path()
有两个参数:第一个是 int 数组,第二个是该数组内部位置的索引。
致电:
print_path( previous[desired_node_index] );
绝对错误(除非你重载了这个函数),因为它需要2个参数而你只传递一个参数。你应该做的是:
print_path( previous, desired_node_index );
此函数中您似乎缺少的是增加/减少索引变量的操作,否则您将始终在数组中打印相同的位置。
在不知道你想要做什么的情况下,你有可能想要这样做:
print_path( previous, previous[desired_node_index] );
答案 1 :(得分:0)
一个明显的错误是:
print_path(previous [desired_node_index]);
我不确定你要做什么,但我想你想要的东西是:
#include <stdio.h>
void print_path(int *previous, int desired_node_index);
int main(void) {
int dest_index = 2;
int previous[5] = { -1, 0, 1, 2, 3};
print_path(previous, dest_index);
return 0;
}
void print_path(int *previous, int desired_node_index) {
if( previous[desired_node_index] != -1 )
print_path( previous, previous[desired_node_index]);
printf("-> %d ", previous[desired_node_index]);
}
答案 2 :(得分:0)
void receive_array(int *temp_arr)
{
int i=0;
do
{
temp_arr[i]=temp_arr[i]+1;
i++;
}
while((char)temp_arr[i]!='\0');
}
答案 3 :(得分:0)
这里我做了一些修改。数组temp_arr2 []是一个缓冲数组。在我的实际程序中,我从main()打印了数组。在这里,为了做同样的事情,需要将一些计算的最终结果存储回temp_arr [] .MAX可以是宏或全局变量。在前一个中,我忘了编辑这些行:temp_arr [i] = temp_arr [i] +1; (我的演示示例代码):)
void receive_array(int *temp_arr)
{
int i=0;
int temp_arr2[MAX];
do
{
temp_arr2[i]=temp_arr[i];
i++;
}
while((char)temp_arr[i]!='\0');
}
答案 4 :(得分:0)
如果要将数组传递给函数并在从函数更改元素后返回,则可以看到以下示例:
您可以在https://github.com/krishnabhat81/Send-and-return-array-from-function-in-C
找到解决方案#include <stdio.h>
/*
If you want to return a single-dimension array from a function, you would have to
declare a function returning a pointer as in the following example:
*/
int *getRandom(int arr[])
{
static int r[10];
/*Second point to remember is that C does not advocate to return the address of a
local variable to outside of the function so you would have to define the
local variable as static variable.*/
int i;
for ( i = 0; i < 10; ++i)
{
r[i] = arr[i]+1;//rand();
printf( "r[%d] = %d\n", i, r[i]);
}
return r;
}
/* main function to call above defined function */
int main ()
{
/* a pointer to an int */
int *p;
int i;
int arris[10] = {110,22,33,44,5,6,7,8,9,20};
p = getRandom(arris);
for ( i = 0; i < 10; i++ )
{
printf( "*(p + %d) : %d\n", i, *(p + i));
}
return 0;
}
return 0;
}