c - 由于 C 中“函数”的类型冲突,无法返回函数参数
问题描述
我是 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”的类型冲突
解决方案
程序开头的函数原型中的返回和参数类型必须与稍后定义函数时的实际类型相匹配。
由于using_name()
定义为:
char *using_name()
您需要将早期的原型更改为:
char *using_name();
int call_func(char name[20]);
另一种解决方案是将函数定义放在程序的开头。您只需要在定义之前使用的函数的原型,或者在另一个编译单元中定义的函数(尽管这些原型通常放在头文件中)。
推荐阅读
- wordpress - 如何复制任何wordpress帖子数据上传自己的wordpress网站
- angular - 单水疗 Angular 10 中的路由问题
- swift - 在 Swift / Combine 中依次执行两个 Promise
- django - django 获取坐标内的多边形
- typescript - Office 插件 PowerPoint:OSF.DDA.SlideRange
- jquery - 我想通过匹配来自 mongo 数据库的值来选中复选框
- sql - 如何在 SQL 中读取以 $ 符号开头的 JSON 键名
- sql - 尝试从两个不同的数据库中获取值时出现语法错误
- r - 我怎样才能缩短电线?
- angular - Angular 12 试图将数据传递给动态加载的组件,但不确定如何实现它