我是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”的类型冲突
答案 0 :(得分:1)
稍后在定义函数时,函数开头的函数原型中的返回值和参数类型必须与实际类型匹配。
由于using_name()
被定义为:
char *using_name()
您需要将早期的原型更改为:
char *using_name();
int call_func(char name[20]);
另一种解决方案是将函数定义放在程序的开头。您只需要在定义函数之前使用它们的原型,或者在另一个编译单元中定义的函数(尽管这些原型通常放在头文件中)即可。