首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C main与Java main

C main与Java main
EN

Stack Overflow用户
提问于 2010-12-10 09:48:16
回答 2查看 417关注 0票数 5

C的main函数和Java的main函数有什么区别?

代码语言:javascript
运行
复制
int main( int argc, const char* argv[] )

vs

代码语言:javascript
运行
复制
public static void main(String [] args)

这些主要功能与每种语言的创建有何关系?每种功能的好处或结果是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-10 09:55:50

C中的入口点( main函数)由C++编译器工具链中的链接器使用,以便在指定了可执行目标的情况下运行可执行文件(否则该函数将被忽略)。这个入口点是可执行规范的一部分,并且是非常静态的。它依赖于机器代码位于特定的、具体的内存地址。想象一下,我们将args数组指针和args计数放在内存中的堆栈上,该堆栈是在操作系统运行可执行文件时设置的,然后运行机器代码。此外,C函数有一个int返回类型,用于向shell返回失败或成功(通常为EXIT_SUCCESS (通常为0)或EXIT_FAILURE)。

Java ( main方法)中的入口点是动态的,因为Java本身是一种解释的JIT语言,并且依赖于类路径中具有此方法的类,并在执行'java‘命令时指定。在查找main方法在字节码中的位置,然后通过字节码解释器运行内容时,需要进行一些处理。args数组也进入堆栈供方法体使用,但还有更多的设置,因为它是一个数组对象--我们让它在通过JNI或类似的方法启动后转换它。Java在main方法中没有返回类型,但可以抛出未检查的异常来指示失败(可能)。

票数 8
EN

Stack Overflow用户

发布于 2010-12-10 09:50:40

它们做同样的事情--它们都是程序的入口点。

签名的不同之处在于,Java支持“知道”它们的长度的数组,而C不支持。这就是您需要argc的原因,它是传递的参数数量的计数。

在C中,通过使用return关键字以及整数值将成功或失败代码返回给shell。在Java语言中,您可以通过使用返回代码调用System.Exit(代码)来完成此操作。做同一件事的两种不同方式。

这家伙有关于这个话题的quite the write-up

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4404948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档