Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Программа на Си (C)  (Прочитано 695 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kaziev-95

  • Автор темы
  • Участник
  • *
  • Сообщений: 228
  • Ставь Ubuntu
    • Просмотр профиля
    • Убунту для жизни
Программа на Си (C)
« : 29 Января 2013, 23:33:30 »
Вот три программы написанные на Си
1.
Код: (c) [Выделить]
#include <stdio.h>

int main(int argc, char const *argv[])
{
int a;
a=getchar ();
printf("Вы нажали %d\n", a);
return 0;
}
2.
Код: (c) [Выделить]
#include <stdio.h>

int main(void)
{
int a;
a=getchar ();
printf("Вы нажали %d\n", a);
return 0;
}
3.
Код: (c) [Выделить]
#include <stdio.h>

int main()
{
int a;
a=getchar ();
printf("Вы нажали %d\n", a);
return 0;
}
Как видно, только третья строка отличается, но результат одинаковый. Что дает использование той или иной конструкции третьей строки?
« Последнее редактирование: 29 Января 2013, 23:34:25 от yorik1984 »

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Программа на Си (C)
« Ответ #1 : 30 Января 2013, 00:24:15 »
2 и 3 это одно и тоже, по правилам C 2 вариант из двух последних более приемлем, касательно первого это аргументы передаваемые программе при запуске, например:
./myprogramma file.txt
при таком вызове программы имя файла будет расположено в массиве argv а значение argc будет равно 2, так как по-молчанию программе передается один аргумент, полный путь к программе, все остальные аргументы добавляются к этому. А вообще почитайте просто про аргументы функций и этот вопрос отпадет.
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Re: Программа на Си (C)
« Ответ #2 : 30 Января 2013, 08:43:25 »
Программа ни как не использует аргументы командной строки,
по сему я бы написал int main()

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

 

Страница сгенерирована за 0.021 секунд. Запросов: 22.