Рубрики

Разница между «int main ()» и «int main (void)» в C / C ++?

Рассмотрим следующие два определения main ().

int main()

{

   / * * /

   return 0;

}

и

int main(void)

{

   / * * /

   return 0;

}

В чем разница?

В C ++ нет разницы, оба одинаковы.

Оба определения работают и в C, но второе определение с void считается технически лучшим, поскольку в нем четко указано, что main можно вызывать только без какого-либо параметра.
В C, если в сигнатуре функции не указан какой-либо аргумент, это означает, что функцию можно вызывать с любым количеством параметров или без каких-либо параметров. Например, попробуйте скомпилировать и запустить следующие две программы на C (не забудьте сохранить ваши файлы как .c). Обратите внимание на разницу между двумя сигнатурами fun ().

// Программа 1 (компилируется и работает нормально на C, но не на C ++)

void fun() {  } 

int main(void)

{

    fun(10, "GfG", "GQ");

    return 0;

}

Вышеприведенная программа компилируется и работает нормально (см. Это ), но следующая программа не скомпилируется (см. Это )

// Программа 2 (Ошибка компиляции на C и C ++)

void fun(void) {  }

int main(void)

{

    fun(10, "GfG", "GQ");

    return 0;

}

В отличие от C, в C ++ обе вышеперечисленные программы терпят неудачу при компиляции. В C ++ и fun (), и fun (void) одинаковы.

Таким образом, разница в том, что в C int main () может вызываться с любым количеством аргументов, а int main (void) может вызываться только без аргументов. Хотя в большинстве случаев это не имеет значения, использование «int main (void)» является рекомендуемой практикой в C.

Упражнение:
Прогнозировать выход следующих программ на Си .

Вопрос 1

#include <stdio.h>

int main()

{

    static int i = 5;

    if (--i){

        printf("%d ", i);

        main(10);

    }

}

вопрос 2

#include <stdio.h>

int main(void)

{

    static int i = 5;

    if (--i){

        printf("%d ", i);

        main(10);

    }

}

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Разница между «int main ()» и «int main (void)» в C / C ++?

0.00 (0%) 0 votes