КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Передача параметров функции main
Перегрузка функций Рекурсия Рекурсия – это способность функции вызывать саму себя. Прямая рекурсия – когда функция вызывает сама себя непосредственно. Косвенная рекурсия – когда функция вызывает себя через другую функцию. Для нормального завершения любая рекурсивная функция должна содержать хотя бы одну нерекурсивную ветвь, заканчивающуюся оператором возврата. Классический пример рекурсии – функция вычисления факториала. Пример программы с функцией вычисления факториала: #include <iostream.h> #include <conio.h> long int factorial(int n) { if (n==0 || n==1) return 1; else return n*factorial(n-1); } void main() { int x; clrscr(); cout<<"Ввести число x="; cin>>x; cout<<"Факториал x!="<<factorial(x)<<endl; } Перегрузка функций – использование нескольких функций с одним и тем же именем, но с различными типами параметров. Используют перегрузку функций в том случае, когда для разных типов данных применяется один и тот же алгоритм. Пример #include <iostream.h> #include <string.h> int max(int x, int y) { if (x>y) return x; else return y; } double max(double x, double y) { if (x>y) return x; else return y; } char *max(char *x, char *y) { if (strlen(x)>strlen(y)) return x; else return y; } void main() { int a=6, b=8; double z=12.4, w=45.5678; char *c="abcd"; char *d="zxcvbnm"; cout<<"Наибольшее целое="<<max(a,b)<<endl; cout<<"Наибольшее вещественное="<<max(z,w)<<endl; cout<<"Наибольшая строка="<<max(c,d)<<endl; } В данном примере функция max используется для определения наибольшего целого числа, наибольшего вещественного числа и определения самой длинной строки. При обращении к функции компилятор с помощью фактических параметров определяет, какой вариант функции необходимо вызвать в данном случае. Этот процесс называется разрешением перегрузки. Смысл механизма разрешения – использовать функцию с наиболее подходящими аргументами. Если точного соответствия не найдено, выполняются преобразования типов в соответствии с общими правилами (char в int, float в double и т.д.) Далее могут выполняться преобразования пользовательских типов и т.д. Если соответствие типов может быть получено более чем одним способом, возникает неопределенность и компилятор выдает сообщение об ошибке. Например, вызов функции max(12.4,10) приводит к ошибке, так как есть неопределенность с числом 10 – отнести его к типу int или к типу double.
Главная функция программы main может быть определена с параметрами, которые передаются из внешнего окружения (параметры командной строки, системные переменные). Все эти данные представляются в виде строк. Для передачи этих строк используются параметры: argc, argv[], argp[]. Параметр argc имеет тип int, его значение равно количеству слов в командной строке, включая само имя вызываемой программы. Параметр argv[] – это массив указателей на строки, каждая из которых содержит одно слово из командной строки. При этом строка с номером 0 содержит полное имя вызываемой программы. Примечание – Каждое слово командной строки – это последовательность символов, не содержащая пробелов (пробелы используются для разделения слов). Если необходимо, чтобы слово содержало пробел, его нужно брать в кавычки. Параметр argp[] – массив указателей на строки, которые содержат значения системных переменных (переменные окружения операционной системы). Пример: Если командная строка при вызове программы имеет вид: c:progs est print –x a2 То параметры argc и argv[] будут иметь значения: argc=3 argv[0]=”c:progs est.exe ” argv[1]=”print ” argv[2]=”-x ” argv[3]=”a2 ” Пример программы, которая выводит на экран параметры, переданные из командной строки, а также параметры операционной системы: #include <iostream.h> #include <conio.h> void main(int argc, char *argv[],char *argp[]) { int i; clrscr(); cout<<"Список аргументов программы"<<endl; cout<<"Имя программы:"<<argv[0]<<endl; for (i=1;i<argc;i++) cout<<i<<"_й параметр="<<argv[i]<<endl; cout<<"Параметры операционной системы"<<endl; while (*argp) { cout<<*argp<<endl; argp++; } }
Дата добавления: 2014-01-13; Просмотров: 414; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |