В C функция main является точкой входа в программу и определяется следующим образом:

int main(int argc, char *argv[]) {
  // program code goes here
  return 0;
}

Параметр argc (количество аргументов) — это целое число, которое содержит количество аргументов, переданных программе из командной строки, включая имя самой программы.

Параметр argv (вектор аргументов) представляет собой массив из char * строк, содержащих аргументы, переданные программе, включая имя самой программы.

Вот пример программы, демонстрирующий, как использовать argc и argv:

#include <stdio.h>

int main(int argc, char *argv[]) {
  printf("Number of arguments: %d\n", argc);

  for (int i = 0; i < argc; i++) {
    printf("argv[%d]: %s\n", i, argv[i]);
  }

  return 0;
}

Если мы скомпилируем и запустим эту программу с помощью следующей команды:

./a.out one two three

Вывод будет:

Number of arguments: 4
argv[0]: ./a.out
argv[1]: one
argv[2]: two
argv[3]: three

Как мы видим, argc равно 4, потому что в программу передаются 4 аргумента. Первый аргумент (argv[0]) — это имя самой программы (./a.out), а следующие аргументы (argv[1], argv[2] и argv[3]) — значения "one", "two" и "three" соответственно.

argc и argv полезны для передачи аргументов командной строки в программу. Их можно использовать для настройки поведения программы или, например, для указания входных и выходных файлов.

Вот еще один пример программы, которая использует argc и argv для разбора параметров командной строки:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
  for (int i = 1; i < argc; i++) {
    if (strcmp(argv[i], "-h") == 0) {
      printf("Usage: %s [-h]\n", argv[0]);
      return 0;
    }
  }

  // program code goes here

  return 0;
}

В этом примере программа принимает параметр -h, который печатает сообщение об использовании. Если в аргументах командной строки присутствует параметр -h, программа печатает сообщение об использовании и завершает работу.

Мы можем скомпилировать и запустить эту программу с помощью следующей команды:

./a.out -h

Вывод будет:

Usage: ./a.out [-h]

Надеюсь, это поможет! Дайте знать, если у вас появятся вопросы.

Пожалуйста, хлопайте, комментируйте и следите за более познавательным контентом, подобным этому.