菜鸟求教函数声明问题~#include#includeint main(){void print_string(char);void delete_string(char,char);void enter_string(char);char c;char str[80];enter_string(str);printf("enter a char:");scanf("%c",&c);delete_string(str,c);print_string(str

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 23:43:21
菜鸟求教函数声明问题~#include#includeint main(){void print_string(char);void delete_string(char,char);void enter_string(char);char c;char str[80];enter_string(str);printf(

菜鸟求教函数声明问题~#include#includeint main(){void print_string(char);void delete_string(char,char);void enter_string(char);char c;char str[80];enter_string(str);printf("enter a char:");scanf("%c",&c);delete_string(str,c);print_string(str
菜鸟求教函数声明问题~
#include
#include
int main()
{
void print_string(char);
void delete_string(char,char);
void enter_string(char);
char c;
char str[80];
enter_string(str);
printf("enter a char:");
scanf("%c",&c);
delete_string(str,c);
print_string(str);
system("pause");
}
void print_string(char str[])
{
printf("%s",str);
}
void delete_string(char str[],char ch)
delete_string*/
{int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
void enter_string(char str[80])
{printf("enter a strings:");
gets(str);}
我用DEV-C++编译的
void print_string(char);
void delete_string(char,char);
void enter_string(char);
发现主函数前3行的声明中不可以省略参数,为什么 难道因为是数组的原故?
前3行就是声明啊,看清提问,我是说在声明中为什么不可以省略掉函数参数,按DEV-C++的编译必须得这样
void print_string(char str[]);
void delete_string(char str[],char ch);
void enter_string(char str[80]);
如果省略掉参数
enter_string(str);这行报错invalid conversion from `char*' to `char'
initializing argument 1 of `void enter_string(char)'以及下面调用2个函数报类似的错
我记得调用声明是可以省略掉参数的啊

菜鸟求教函数声明问题~#include#includeint main(){void print_string(char);void delete_string(char,char);void enter_string(char);char c;char str[80];enter_string(str);printf("enter a char:");scanf("%c",&c);delete_string(str,c);print_string(str
函数其实也是有作用域的,跟变量是一样的,你得在调用前申明它.
不好意思,没看清楚
你说对了,就是数组的原因
如果你在前面声明成char *或者 char[]就不会有问题了,为什么?
char 是字符型
char *和 char str[]都是字符串
两者不是同类型,如果不是函数重载,编译器自然要报参数无法隐式转换的错误.