Здравствуйте, меня интересует main функция с параметрами, часто вижу запись в чужых исходниках, да и в своих (пишу эту часть неосознанно)
int main(int argc, char **argv)
Как эти параметры передаются в функцию при ее вызове и что они вобще значат, спасибо.
Это параметры, которые передаются программе при запуске.
argc - количество этих параметров. argv - указатель на массив указателей на строки, каждая из которых содержит один параметр. Параметры передаются в виде строк Си. Еще бывает такая запись - char* argv[]
В структуре памяти процесса Линукса они находятся в стеке сразу за стеком функции main. Думаю, в других системах то же устройство.
Вам тут показали на примерах. Забыли правда про третий параметр main() ссылку на вектор переменных окружения ОС (environment, те, которые в Shell устанавливаются командой export).
Вообще полностью:
int main (int ac, char **argv, char **env)
Почитайте также man execl.
Это стандртная вещь в C/C++
При этом argv[0] - это имя команды, а argv[argc] - это NULL.
baz.cpp:
#include <iostream>
int main(int argc, char** argv) {
std::cout << "argc: " << argc << "\n";
for (int i =0; i < argc; ++i)
std::cout << i << ": " << argv[i] << "\n";
}
Смотрим:
$ g++ baz.cpp -o boo
$ ./boo foo
argc: 2
0: ./boo
1: foo
Если ваша прога будет называться myprog, то допустим вы вызываете ее с параметрами так:
myprog param1, param2, param3
Соответственно в main()
вы получите:
argc=3 //количество параметров
argv[0]="param1"; //1-й параметр
argv[1]="param2" //2-й параметр
argv[3]="param3" //3-й параметр
При этом если при завершении проги вы вернете в main()
return 2;
то ось получит exit code равное 2 (в Windows это называется errorlevel
)
Update Спорол лажу с примером - исправляю:
myprog param1 param2 param3
Соответственно в main()
вы получите:
argc=4 //количество параметров
argv[0]="myprog"; //название запускаемого файла
argv[1]="param1" //1-й параметр
argv[2]="param2" //2-й параметр
argv[3]="param3" //3-й параметр
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо реализовать простую программу передачи данных по компортуУстройство которое кидает мне пакет в ответ который я должен прочитать...
Мне надо каждому QList ImageList; присвоить определённый индекс