深究全局變量和函數調用,有關于本質底層的問題

函數經過聲明就可以在其他函數的内部使用是爲什麽,爲什麽main函數裏面啥也沒傳,,函數名字也沒作爲參數傳進去,在main()函數裏面就能使用自己寫的某些函數呢??是通過什麽機制找到了自己寫的那些函數呢??或者說 全局變量爲什麽能被其他函數在内部直接使用而不用作爲參數傳遞進去呢???是什麽機制做到了這些????main内部使用自己寫的函數,而那些自己寫的函數是和main在同一層,main的同一層函數是怎麽進入main?從而被main使用的呢?????請詳細解答。

【以下回答由 GPT 生成】

答案: 1. 声明的函数可以在其他函数内部使用是因为在编译和链接过程中,编译器会将函数的定义和声明分开处理。函数的声明将函数的名称和参数类型传递给其他函数,以便其他函数在需要时调用该函数。在链接过程中,编译器会解析函数的名称和参数类型,以确定调用该函数的位置和方式。

  1. main函数没有传递参数和函数名作为参数的原因是因为main函数是操作系统调用的入口函数,在执行程序时,操作系统会直接调用main函数,而不需要向其传递参数。在编写程序时,实际需要的参数可以通过命令行参数、全局变量或从其他函数内部传递给main函数。

  2. 全局变量能够被其他函数直接使用而不需要作为参数传递进去是因为全局变量在程序的整个生命周期内都是可访问的。编译器会为全局变量分配内存,并在程序启动时初始化。其他函数可以通过使用extern关键字来声明全局变量,并在需要时直接使用。

  3. 在main函数内部使用自己写的函数时,这些函数是在编译和链接过程中被连接到main函数的。编译器在编译和链接的过程中会将所有函数的定义连接到主函数main中,从而使得这些函数可以在main函数内部使用。在执行程序时,操作系统会从main函数开始执行,然后调用其他函数。因此,这些同一层的函数是通过编译和链接的过程进入main函数,从而被main函数使用。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

有include的话,函数包含在头文件里了
另外,TC等一类编译器,默认包含stdio,所以什么都不写也能 printf
main是链接器将它作为程序入口点的
全局变量也是链接器去分配空间的。