1132113412412

  • 08 дек. 2011 г.
  • 450 Слова
Пример 1.
void prn() { printf(“Hello”); } //вызов prn(); void означает, что функция не возвращает значения при помощи return. () означают, что у функции нет входных параметров.

Пример 2.Суммирование двух чисел
int sum(int a,int b) { int s ; s=a+b; return (s); } /* тело функции можно заменить на return a+b;*/ Оператор return возвращает результат функции.

Вызов функции int x, y, s; s=sum (x, y);x, y – фактические параметры. Вызов функции может осуществляться как из выражения, так и самостоятельно: s=sum (x+2, 3) ; sum(x,10); /* правильно, но бессмысленно*/

Оператор return передаёт ввызывающую функцию только одну величину. Передача параметров осуществляется по значению. Это значит, что в вызываемой функции для каждого формального параметра выделяется область памяти, куда копируютсязначения фактических параметров при вызове. В подпрограмме все операции осуществляются только с копиями. Для получения результатов из подпрограммы-функции следует использовать указатели в качестве формальныхпараметров. Рассмотрим пример – функцию, которая меняет местами два числа.

Вариант 1.

void f1(int a, int b) a b {int t;//для перестановки 5 2 t=a; a=b; b=t; } main() x y 5 2 {int x=5, y=2; printf(“доперестановки x=%d, y=%d\n”,x, y); f1(x, y); printf(“после перестановки x=%d, y=%d\n”,x, y); } При передаче параметров по значению во временной памяти создаются копии параметров. После выхода из функции копииуничтожаются и память освобождается.

до перестановки x=5, y=2 после перестановки x=5, y=2

Вариант 2. Передача параметров по адресу. Этот вариант правильный – происходит перестановка значений.//вызов main() {int x=5, y=2; printf(“до перестановки x=%d, y=%d\n”,x, y); f1(&x, &y); printf(“после перестановки x=%d, y=%d\n”,x, y); }

void f2(int *a, int *b) { int t; //перестановка значений t=*a;*a=*b; *b=t; } a b
1024 1028

x
5

y
2

1024

1028

По адресу необходимо передавать • переменные, значения которых изменяются в функции; • переменные,...
tracking img