2013-09-21 50 views
10

Я начинаю на языке C. Может ли кто-нибудь объяснить подробно, используя пример, как main(), int main(), void main(), main (void), void main (void), int main (void) работают на языке C? Как в том, что происходит, когда мы используем void main() и что происходит, когда я использую int main() на простом языке и так далее.
Я знаю, но не можешь понять, что он делает:Как работает int main() и void main()

  1. основные() - функция не имеет аргументов
  2. не ИНТ основные() - функция возвращает Int значение
  3. недействительных основные() - функция возвращает ничего и т.д. .

Когда я пишу простой мир привет, используя int main() return 0, он все равно дает мне тот же результат, что и при использовании void main()), так как это работает? Каково его применение?

+5

'недействительным основной()' полезен в основном как признак того, что вы используете учебник, написанный кем-то, кто не знает языка C очень хорошо. Из перечисленных вами форм действует только 'int main (void)'. (Это не совсем так просто, но на данный момент это достаточно близко.) –

ответ

19

Ни main() или void main() стандартны C. Первое допускается, как это имеет неявный int возвращаемое значение, что делает его таким же, как int main(). Цель возвращаемого значения main - вернуть exit status в операционную систему.

В стандартном C, только действительные подписи для main являются:

int main(void) 

и

int main(int argc, char **argv) 

Форма вы используете: int main() старая декларация стиля, который указывает main принимает неустановленное количество аргументов. Не используйте его - выберите один из приведенных выше.

+1

В резюме они просто разрешены для совместимости в обратном направлении со старым кодом C, написанным, когда операционной системе не требуется статус выхода. Вы всегда должны возвращать целочисленное значение в 'main' – Jack

+2

@Jack:' void main() 'не для обратной совместимости ни с чем. Тот же стандарт, который впервые ввел ключевое слово 'void', определил тип возврата' main' как 'int'. –

+0

int main (int argc, const char ** argv, const char ** env) – dns

0

int main возвращает значение integer

в то время как

void main возвращает nothing

8

Если вы действительно хотите понять, ANSI C 89, мне нужно, чтобы исправить вас в одном; В ANSI C 89 разница между следующими функциями:

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

является:

int main()

  • функция, которая ожидает неизвестное количество аргументов неизвестных типов. Возвращает целое число, представляющее статус прикладного программного обеспечения.

int main(void)

  • функция, которая не ожидает никаких аргументов. Возвращает целое число, представляющее статус прикладного программного обеспечения.

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

  • функция, которая ожидает ARGC количество аргументов и ARGV [] аргументы. Возвращает целое число, представляющее статус прикладного программного обеспечения.

О при использовании каждого из функций

INT основные (недействительный)

  • вы должны использовать эту функцию, когда ваша программа не требует никаких начальных параметров для запуска/нагрузок (параметры, полученные из ОС - вне программы он сам).

INT основной (интермедиат ARGC, символ * ARGV [])

  • вы должны использовать эту функцию, когда ваша программа нуждается в начальные параметры для загрузки (параметры, полученные от операционной системы - аут программы сам).

О void main()

В ANSI C 89, при использовании void main и компиляции проекта AS -ansi -pedantic (в Ubuntu, например) вы получите предупреждение о том, что ваша главная функция типа аннулируются и не тип int, но вы сможете запустить проект. Большинство разработчиков C обычно используют int main() во всех своих вариантах, хотя void main() также скомпилирует.

Надеюсь, что это поможет!

Удачи и счастливого кодирования

Смежные вопросы