Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример 13.1
#include< stdio.h> int int max_int(int a, int b) {return a> b? a: b; } main() { int max_int(int a, int b); m1, l; m1=max_int(5, 9); l=strlen(" по значению"); В качестве фактических аргументов передаются либо изображения констант, либо выражения. Этот способ используется для передачи входных аргументов.
13.1.2 Передача аргументов по имени Пример 13.2 int max_int(int a, int b) {return a> b? a: b; } main() { int max_int(int a, int b); int a, b, m1; int x[]={-1, 10, -200, -9}; int m2, l1, l2, l3; char s[]=" пл наименованию"; char *ms[]={" Белеет", " парус" }; int *px; char *pms; int i; scanf(" %d", & a); /*значение а вводит пользователь*/ b=25; m1=max_int(a, b); /*max_int вызывается и ей передаётся значение*/ px=x; for(i=0; i< 3; i++) {m2=max_int(*px++, x[i+1]); printf(" m2=%d", m2); } l1=strlen(s); pms=ms; for(i=0; i< 2; i++) {l2=strlen(ms[i]); l3=strlen(*pms++); printf(" l2=%d l3=%d", l2, l3); } } Этот способ используется только(!!!) для передачи входных аргументов.
13.1.3 Передача аргумента по ссылке Пример 13.3 /*так нельзя!!!!!!!!!! */ void obmen(int a, int b) { int r; r=a; a=b; b=r; } Пример 13.4 /*нужно только так!!!! */ ………… void obmen(int *a, int *b) { int r; r=*a; *a=b; *b=r; } main() { int x, y; void obmen(int *, int *); scanf(" %d %d", & x, & y); printf(" x=%d y=%d", x, y); obmen(& x, & y); printf(" x=%d y=%d", x, y); }
Этот способ используется для передачи выходных и обновляемых аргументов. !!! Количество, типы и порядок следования формальных и фактических аргументов должны совпадать. 13.2 Особенности передачи аргументов функций в языке С Все аргументы передаются по значению: вызываемой функции-копии. !!! Вызываемая функция не может непосредственно изменить переданные ей параметры. Пример 13.5 /*возведение x в степень n*/ /*вариант 1*/ int power 1(int x, int n) { int i, p; p=1; for(i=0; i< =n; i++) p=p*x; return p; }
|