为啥在C语言中,“scanf”竟然可以作为自定义函数的函数名而不报错??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在C语言中,“scanf”竟然可以作为自定义函数的函数名而不报错??相关的知识,希望对你有一定的参考价值。

参考技术A 问一下使用的是什么编译软件

如果是VC++ 那么完全正常!!

因为支持C++特性。

你那样写,虽然与库函数的scanf函数名字一样,但是所带的参数不一样
所以等于是重载函数。 不知道LZ懂不懂C++,懂不懂重载函数。本回答被提问者采纳
参考技术B 你没有使用
#include <stdio.h>
这样使用包含该函数的头文件
scanf,不是关键字。所以可以为自定义函数的函数名追问

#include
#include
int scanf()

printf("scanf竟然可以做标识符?!");

main()

scanf();
system("pause");

参考技术C 函数可以重载的,只要参数个数或者参数类型不同就可以 参考技术D scanf 不是C语言中的关键字 第5个回答  2012-11-01 那你试过其他的stdio.h里面的字符吗。。。。。再说你自己都说了是自定义的那还报什么错。。。。。

C语言中函数为啥可以嵌套定义 ?

取决于编译器.

我在Ubuntu16.04 用默认gcc,在eclipse中测试可以实现嵌套定义.

经测试在函数中定义的函数,在当前作用域可以被调用.

这样一来,c语言貌似具有了一些面向对象的特性,使用起来比较方便

参考技术A C语言中函数的定义都是相互平行、相互独立的,也就是说在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以嵌套调用。嵌套调用就是某个函数调用另外一个函数(即函数嵌套允许在一个函数中调用另外一个函数)。 参考技术B 函数都是平行的,不可以嵌套定义,可以嵌套调用。 参考技术C C语言不支持函数嵌套定义的,你搞错了吧?本回答被提问者采纳

以上是关于为啥在C语言中,“scanf”竟然可以作为自定义函数的函数名而不报错??的主要内容,如果未能解决你的问题,请参考以下文章

C语言关于函数声明的问题,为啥声明后还是报错说函数未定义

c语言将字符输入至数组为啥不执行呢

C语言为啥可以重写标准库函数?

使用vs2013编写c语言程序 为啥 会出现max函数没有被定义error

C语言free释放内存后为啥指针里的值不变?竟然还可以输出

如何在priority_queue中使用函子作为自定义比较器