Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Листинг5. Передача нескольких параметров



/*area.c*/main() { float length, width; intfnum; printf("Введитеномерэтажа: "); scanf("%d", &fnum); printf("Введитедлинуэтажа: "); scanf("%f", &length); printf("Введитеширинуэтажа: "); scanf("%f", &width); area(length, width, fnum); }area(size, wide, num)float size, wide;intnum; { float area; area = size * wide; printf("Площадь %d этажа равна %f.2f", num, area); return(0); }

Здесь три аргумента были получены в том же порядке, в каком переданы. Значение переменной length присвоено переменной size, содержимое переменной width передано wide, а значение fnum — переменной num. Типы аргументов соответствуют друг другу: два вещественных значения получили две переменные типа float, а переменная типа int получила целое число.

Функции area() необходимо каким-то образом хранить результаты вычислений. С этой целью внутри тела функции area() нами определена переменная с именем area.

Если бы в инструкцию вызова функции вкралась ошибка и аргументы были перечислены нами в следующем порядке:

area(width, length, fnum);

то значение переменной width получила бы переменная size, а значение length — переменная wide. Поскольку типы переменных по-прежнему находятся в соответствии с получаемыми значениями, ошибки при компиляции не возникнет. Более того, результат работы программы будет совершенно правильным, ведь от изменения порядка мест сомножителей, произведение не меняется. Но предположим, что при вызове функции аргументы оказались расположенными в таком порядке:

area(fnum, width, length);

Теперь значение переменной fnum получит переменная wide, содержимое width перейдет в size, а переменной num будет присвоено значение length. Нетрудно заметить, что два аргумента имеют типы, не соответствующие получаемым значениям. Даже если компилятор не сообщит об ошибке, в результате работы программы мы все равно получим неверную информацию.

Рассмотрим еще один пример, приведенный в Листинге 6. В этой программе вводятся значения двух переменных: стоимость единицы продукции (cost) и процент скидки (discount). Затем переменные cost и discount передаются функции price() через формальные аргументы amount и mrkdown. Переменные reduce и net определяются внутри функции price() и являются для нее автоматическими.





Дата публикования: 2015-07-22; Прочитано: 183 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...