以下这段程序因为函数重名,是不正确的
C语言不对。
C++这是正确的啊,函数名重载,意思就是函数名是一样的,参数列表不一样,可以通过参数来判断是具体执行哪个函数
本质上是因为C语言编译后每个函数都会有一个符号,C语言中这个符号就是函数名,而符号是不能重复的。c++可以重载是因为对函数名进行了名称修饰,从而让函数的不同重载有了不同的符号。
举个例子来说
void func(int x,int y);
C语言编译之后函数名解析为_func,这个是唯一的,但是c++编译之后会变成_func_int_int,如果参数变成float,C语言还是_func,但是c++会变成_func_float_float.这里的解析名是举例,具体编译之后函数名是什么,是有一套规则的,不同的编译器结果可能会不一样。
下面这个就是C++下面vs编译之后生成的函数名
该回答引用ChatGPT
不正确。在这段程序中,foo 函数被定义了两次,一个带有整型参数,另一个带有双精度浮点型参数,这就造成了函数重名。
在 C 语言中,函数名必须是唯一的,重名的函数是不允许的。如果需要定义两个功能相似但参数类型不同的函数,应该给它们不同的函数名,或者使用函数重载的方式,即为它们赋予不同的参数类型和个数。
是的,这段程序确实因为函数重名而不正确。具体来说,函数 foo 在程序中定义了两次,一次带有一个整型参数 int m,一次带有两个双精度浮点型参数 double x 和 double y,而它们的函数名和参数数量不同,但函数名相同。这样,在调用函数 foo 时,编译器无法确定具体调用哪个 foo 函数,会导致编译错误。
有的语言 里 可以 重名,只要参数 不一样就行 。比如 java 。javaScript 就不行,具体看语言了
供参考:https://baike.baidu.com/item/%E9%87%8D%E8%BD%BD%E5%87%BD%E6%95%B0/3280477?fr=aladdin
你这是c语言,c语言不能函数重载,c++可以,函数重载就是函数名相同,参数个数或者类型不同