Аргументы функции не обязательны. Одни разработанные вами функции могут не иметь аргументов, а у других их может быть много. Тип аргументов одной функции может быть разным: это означает, что для них можно использовать любые стандартные типы данных.
Формальные и фактические параметры
Каждое описание функции содержит некоторый список аргументов, называемый списком формальных параметров. Элементы в этом списке необязательны, поэтому список может быть как пустым, так и содержать комбинацию элементов любого типа данных, например integer, float и character.
Если какая-то программа вызывает функцию, то она передает этой функции список параметров, называемый списком фактических параметров. Если программа соответствует стандарту ANSI С, то списки формальных и фактических параметров полностью совпадают, хотя на практике строгая проверка не выполняется.
Рассмотрим следующий пример на С:
printf ("This is hexadecimal %x and octal %o",ians);
В данном примере функции printf() передается только один параметр, хотя ожидаются два. Если список параметров неполон, то недостающие параметры инициализируются произвольными значениями. В списке формальных параметров можно указывать значения по умолчанию. Если некоторый параметр отсутствует в списке фактических параметров, то автоматически подставляется его значение по умолчанию. Например, в C++ можно записать следующий прототип функции:
int iyourfunction(int it,float fu=4.2,int iv=10)
Если при вызове функции iyourfunction() не указаны параметры fu или iv, то будут использоваться указанные значения (4.2 или 10). Все формальные параметры, имеющие значения по умолчанию, необходимо ставить в конце списка формальных параметров.
Аргументы функции main()
В обоих языках, С и C++, имеется возможность обработки аргументов командной строки, которые представляют собой параметры, вводимые вместе с именем программы при ее вызове из командной строки операционной системы. Эта возможность позволяет передавать аргументы непосредственно вашей программе без дополнительных запросов из этой программы. Например, пусть некоторая программа получает из командной строки четыре аргумента:
YOURPROGRAM Sneakers, Dumbdog, Shadow, Wonderdog
Здесь четыре значения передаются из командной строки программе YOURPROGRAM. На самом деле эта информация передается функции main(). Один аргумент, получаемый main(), argc, представляет собой целое число, определяющее количество элементов командной строки плюс 1.
Начиная с DOS 3.0, название программы считается первым элементом, передаваемым из командной строки. Второй аргумент — это указатель на массив указателей на строки, называемый argv.