了解C语言的设计漏洞:为什么不允许函数重载?

  1. 在C语言中,即使不写返回类型,也可以编译运行程序。因为C语言的函数只看名字,不看返回类型。在寻找入口函数时,程序只需要找名为“main”的函数即可,对于返回类型和参数类型并不在乎。

  2. C语言不允许函数重载,同名函数只是参数不同,C语言视为重复的函数符号。

  3. C语言是调用者清栈,因此即使不写参数也可以在main函数中声明为void类型,程序不会出错,只是无法获取命令行参数。

  4. 在汇编层面,函数返回的值是EAX寄存器的值,如果不赋值,EAX寄存器就是一个随机数。因此,即使声明为void类型,main函数也有返回值,只是随机值而已。

  5. C语言的设计存在一些不太严谨的地方,有些是早期编译器遗留的问题,因此应该按照现代C语言规范来编写代码,以提高可读性和可维护性。

  6. 虽然main函数的返回值在代码中可能没有实际意义,但是它仍然有作用。在Unix体系中,进程被当作函数来调用,启动子进程后需要使用进程的返回值来获取子进程是否运行正确的状态。因此,main函数的返回值会作为进程结束的状态码返回给父进程。


    e4d1c98c8b84b362b1d0336ecfa02ae8.jpeg刚好,我这里有C语言资料包,私信我领取

猜你喜欢

转载自blog.csdn.net/m0_67034740/article/details/129730107