由于C中“函数”的类型冲突,无法返回函数参数

由于C中“函数”的类型冲突,无法返回函数参数,c,function,C,Function,我是C语言的新手,我正在尝试理解我的函数如何使用_name来冲突类型 我也不明白为什么我必须包含一个“*”来命名“using_name”函数。这是因为我在函数地址中存储了一个值 #include <stdio.h> #include <stdlib.h> #include <math.h> int using_name(), call_func(char name[20]); char name[20]; int main () { using_n

我是C语言的新手,我正在尝试理解我的函数如何使用_name来冲突类型

我也不明白为什么我必须包含一个“*”来命名“using_name”函数。这是因为我在函数地址中存储了一个值

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int using_name(), call_func(char name[20]);
char name[20];

int main ()
{
    using_name();
    call_func(name);

    return 0;
}

char* using_name()
{
        printf("What is your name: ");
        scanf("%s", name);
        printf("\n Your name is %s", name);

        return name;
}

int call_func(char name[20])
{
    printf("Hello %s", using_name(name));

}

错误:“using_name”的类型冲突程序开始时函数原型中的返回和参数类型必须与以后定义函数时的实际类型相匹配

因为使用_名称定义为:

char *using_name()
您需要将早期原型更改为:

char *using_name();
int call_func(char name[20]);

另一个解决方案是将函数定义放在程序的开头。您只需要在定义之前使用的函数或在另一个编译单元中定义的函数的原型,尽管这些原型通常放在头文件中。

,int使用_name,char*使用_name。这是一个精心设计的示例,不使用返回值–无论如何,它是一个全局的–但定义和声明必须匹配。它有两种返回类型和两种参数类型:声明时没有参数,然后用char*参数调用。这解决了冲突问题,但现在当我运行脚本时,我输入了一个名称,第一个函数在移动到下一个函数之前重复。你能再帮我一次吗?那是因为你用你的名字打了两次电话。您可以在main中调用它,然后在call_func中再次调用它。它应该是printfHello%d\n,name;巴尔马当选总统!