07-08 (1106244), страница 2
Текст из файла (страница 2)
передаются только значения аргументов, и эти значениякопируются в память функции).Если аргументом является указатель, его значением можетбыть адрес объекта вызывающей функции, что обеспечиваетвызываемой функции доступ к объекту.25Вызов функцииМассив всегда передается с помощью указателя на егопервый элемент.int asum1d (int a[], int n) {int s = 0;for (int i = 0; i < n; i++)s += a[i];return s;}Можно объявить массив a в списке параметров как const a[].Функции с переменным числом параметров:int scanf (const char *, ...);Всегда должен быть явно задан хотя бы один параметр.После многоточия не должно быть других явных параметров.Обработка переменных параметров – файл stdarg.h.26ФункцииПример:#include <ctype.h>int atoi (char *s){int n, sign;for (; isspace (*s); s++);sign = (*s == '-') ? -1 : 1;if (*s == '+' || *s == '-')s++;for (n = 0; isdigit (*s); s++)n = 10 * (*s - '0');return sign * n;}Стандартная библиотека ctype содержит такие функции, как27isspace() , isdigit() и др.Указатели и аргументы функцийИспользуя аргументы-указатели, функция может обращаться кобъектам вызвавшей ее функции.Использование указателей позволяет не дублировать массивы,передавая их функции:функции достаточно передать указатель на первый элементмассива.Пример.
Функция void swap(int x, int y);меняет местами значения переменных x и y.Неправильный вариант:void swap (int x, int y){int tmp;tmp = x;x = y;y = tmp;Правильный вариант:void swap (int *px, int *py){int tmp;tmp = *px;*px = *py;*py = tmp;}}28.