c - 由于 C 中 'function' 的类型冲突,无法返回函数参数

标签 c function

我是 C 语言新手,我试图了解我的函数“using_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”的类型冲突

最佳答案

程序开始时函数原型(prototype)中的返回值和参数类型必须与稍后定义函数时的实际类型相匹配。

由于 using_name() 定义为:

char *using_name()

您需要将早期的原型(prototype)更改为:

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

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

关于c - 由于 C 中 'function' 的类型冲突,无法返回函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56349245/

相关文章:

c - 每当我尝试使用函数时,我总是收到编译器错误

c - Makefile,链接库

c - 为什么这些构造使用前后递增的未定义行为?

c - 通过串口发送文件

PHP 函数从 MySQL 数据库中进行选择并将结果传递到数组

python - 从只有一个参数集的旧函数生成新函数

c - 如何调整由函数创建的字符数组中的内存大小?

使用指针的strcat的c程​​序

c - 使用 mem alloc 通过指针或指向指针的指针将字符串数组发送到函数?

postgresql - 我需要一个函数来从表中选择 88 个随机行(不重复)