int 函数 返回值可必须是int吗

假如我要设计个函数int search(int a[],int b),从数组中找一个数,找到就返回返回这个数,如果没找到就返回一个标志,表示没找到,此时返回值可不可以不是int

是的
在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的:
int main( void )
int main( int argc, char *argv[] )
(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)
当然,我们也可以做一点小小的改动。例如:char *argv[] 可以写成 char **argv;argv 和 argc 可以改成别的变量名(如 intval 和 charval),不过一定要符合变量的命名规则。
如果不需要从命令行中获取参数,请用int main(void) ;否则请用int main( int argc, char *argv[] ) 。
main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。
如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不过,我还是建议你 最好在main函数的最后加上return 语句,虽然没有这个必要,但这是一个好的习惯。注意,vc6不会在目标文件中加入return 0; ,大概是因为 vc6 是 98 年的产品,所以才不支持这个特性。现在明白我为什么建议你最好加上 return 语句了吧!不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入 return 0; 。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-02
理论上市可以不是int型的,
参数和返回值不同类型是没有问题的

不过你的程序,好像没法实现这个功能
也就是说返回的标志和所找的的数没法区别

给你个思路,也就是说返回的数据方面下手
找到了,返回这个数在数组中的第几个数,也就是数组的下标,
找不到返回-1,这样可以区别了,
因为数组下标是从0开始的,不可能是-1
这样就区别开来了 ,再就是,返回第几个数,这样在调用的函数中,这个数组时没有变的,可以吧这个数据找出来本回答被网友采纳
第2个回答  2012-05-02
必须是int类型的,如果你觉得不合理,你可以
char search(int a[],int b, int* data),
用data指针返回数据,然后返回值,也就是那个char,你用来判断是否查找成功,比如,小于0就是没找到,非负数就是找到,这不也可以么?
第3个回答  2012-05-02
必须是int。但你可以定义成返回值是结构体,
结构体成员包括一个标志和一个数。
第4个回答  2012-05-02
如果不是int,首先会尝试将返回值转换为int,并给出warning。如果不能转换,则给出编译Error。
相似回答