Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример 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;

}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.