🏠 | 💻 IT | Программирование Code | C |

Что такое argc, char * argv[]

В Си все функции в исполняемом файле вызываются из функции main().

Функция main() тоже должна быть вызвана. Например, из bash.

Вызов может быть как без аргументов, так и с аргументами

argc - argument count - это количество аргументов командной строки. Тип argc - int

Минимально значение argc это 1. argv[0] это имя программного файла (в нашем случае программный файл это hello_world.c).

Си это очень старый язык, созданный задолго до появления современных графических интерфейсов.

char* - это тип возвращаемого значени

argv[] - argument vector - массив значений этих аргументов

Если Вы не собираетесь использовать аргументы командной строки, то можно писать int main()

Что вообще под этим имеется в виду:

Рассмотрим простейшую программу, которую мы написали в файле hello_world.c

#include <stdio.h> int main(int argc, char* argv[]) { printf("Hello, World!\n"); return 0; }

Предположим, что мы скомпилировали наш hello_world.c в hello_world командой

gcc -o hello_world hello_world.c

И теперь выполняем

./hello_world

Нам совершенно не важно написано int main(int argc, char* argv[]) или прост int main()

В какой момент это станет важным?

Рассмотрим другую программу, написанную в файле argc_argv.c

#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int a1=atoi(argv[1]); int a2=atoi(argv[2]); printf("File name = %s\n",argv[0]); printf(" %d %d \n", a1, a2); return 0; }

gcc -o argc_argv argc_argv.c
./argc_argv 7 9

File name = ./argc_argv
4 5

Мы вызываем argc_argv и прямо в командной строке передаём два аргумента.

Сперва мы убедились что argv[0] это действительно имя файла. Затем увидели переданные аргументы

Теперь, если Вы захотите убрать int argc, char* argv[] из main

int main()

Компилятор Вас не поймёт и пожалуется на необъявленные argv

argc_argv.c: In function ‘main’: argc_argv.c:7:16: error: ‘argv’ undeclared (first use in this function) int a0=atoi(argv[0]); ^~~~ argc_argv.c:7:16: note: each undeclared identifier is reported only once for each function it appears in

Если убрать все упоминания о аргументах командной строки из кода и попробовать запустить программу с аргументами - они буду проигнорированы.

#include <stdio.h> #include <stdlib.h> int main() { return 0; }

gcc -o argc_argv argc_argv.c
./argc_argv 7 9

Если остались вопросы - смело задавайте их в комментариях.

Поиск по сайту
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: