菜鸟求教函数声明问题~~!!

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:07:30
#include<stdio.h>
#include<stdlib.h>
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行就是声明啊,看清提问,我是说在声明中为什么不可以省略

函数其实也是有作用域的,跟变量是一样的,你得在调用前申明它。

不好意思,没看清楚

你说对了,就是数组的原因
如果你在前面声明成char *或者 char[]就不会有问题了,为什么?
char 是字符型
char *和 char str[]都是字符串
两者不是同类型,如果不是函数重载,编译器自然要报参数无法隐式转换的错误。

在后面定义的函数
前面声明也要带相同类型的参数

void print_string(char);
或是
void print_string(char str[]);
都可以吧

如果觉得这样用麻烦
就干脆先写好这些函数
再把main函数写到这些函数后面就好了

=================
void print_string(char*);
写成这样呢?
或者是这样,不知道这样行不行
void print_string(char[]);