2010-12-10 3 views
4

В чем разница между основной функцией C и основной функцией Java?C main vs Java main

int main(int argc, const char* argv[]) 

против

public static void main(String [] args) 

Как эти основные функции относятся к каждому созданию языков и каковы преимущества и результаты каждого из них?

+2

Вы не понимаете, что из них (или обоих) из них? – 2010-12-10 01:53:40

+0

Это было не о непонимании. Это было «Как эти основные функции связаны с каждым созданием языков и каковы преимущества или результаты каждого из них?» – jarryd 2010-12-10 12:22:09

ответ

7

Точка входа в C (основная функция) используется компоновщиком в инструментальной цепочке компилятора C++ для запуска, когда исполняемый файл запускается, когда задана исполняемая цель (в противном случае функция игнорируется). Эта точка входа является частью исполняемой спецификации и довольно статична. Он опирается на машинный код на конкретный конкретный адрес памяти. Представляя это так, мы помещаем указатель на массив args и подсчет args в стек в памяти, который настраивается, когда исполняемый файл запускается операционной системой, а затем запускает машинный код. Кроме того, функция C имеет тип возврата int, который используется для возврата отказа или успеха в оболочку (обычно EXIT_SUCCESS (обычно 0) или EXIT_FAILURE).

Точка входа в Java (основной метод) является динамической, поскольку сама Java является интерпретированным языком JIT и полагается на класс с этим методом, находясь в пути к классам и указывается при выполнении команды «java». Существует небольшая обработка, связанная с поиском того, где основной метод находится в байт-коде, а затем запускается содержимое через интерпретатор байт-кода. Аргумент args также попадает в стек, который будет использоваться телом метода, но для него существует больше настроек, чем это, поскольку это объект массива - мы его преобразуем после кикстарта через JNI или такой. Java не имеет типа возврата в основном методе, но исключить исключение можно, чтобы указать на отказ (возможно).

11

Они делают то же самое - они оба предназначены для входа в вашу программу.

Разница в сигнатурах заключается в том, что Java поддерживает массивы, которые «знают», какова их длина, а C нет. Вот почему вам нужен argc, который является числом числа переданных аргументов.

В C вы возвращаете код успеха или отказа в оболочку, используя ключевое слово return, а также целое значение. В Java вы делаете это, вызывая System.Exit (код) с кодом возврата. Два разных способа сделать одно и то же.

Этот парень имеет quite the write-up по теме!