Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оголошення покажчика




Main()

....

....

....

Main()

{

float q, x, duff(); /* оголошення в програмі що викликається */

int n;

q = duff(x, n);

}

float duff(u, k)/* оголошення у визначенні функції */

float u;

int k;

{

float tor;

return( tor ); /* повертає значення типу float */

}

 

1.1.5. Передача значень функції

Аргументи використовуються для передачі значень із програми що викликається в функцію. Якщо значення змінних a і b будуть 5 і 2, то при виклику

с = diff(a, b);

здійснюється передача цих значень змінним x і y. Значення 5 і 2 називаються фактичними аргументами, а змінні x і y,вказані в оголошені функції diff(), –формальними аргументами.

Наприклад

{

int c;

c = diff( 5, 2 );

}

diff( x, y )

int x, y;

{

int z;

z = x – y;

return( z );

}

 

Використання ключового слова return дозволяє передавати у викликаючу програму одне значення із функції що викликається. В нашому прикладі змінній с присвоюється значення змінної z що рівне 3.

Покажчик – це змінна, котра призначена для збереження адресу об’єкта деякого типу.

Синтаксис:

[<специфікація типу>] * <описувач>;

Специфікація типу задає тип змінної, на яку посилається покажчик, а символ (*) визначає саму змінну як покажчик.

Оголошення покажчика специфікує ім’я змінної-покажчика і тип об’єкта, на який може вказувати ця змінна. Специфікація типу може задавати базовий, пустий, структурний тип чи тип об’єднання. Якщо специфікація типу пропущена, передбачається тип int.

В мові Сі використовуються змінні типу покажчик. Значенням такої змінної слугує адреса деякої величини. Якщо ми дамо покажчику ім’я ptr, то зможемо написати, наприклад, такий оператор:

ptr = &pooh; /* присвоєння адресу pooh змінній ptr */

де &pooh – константа типу покажчик (адрес деякої змінної pooh);

ptr – змінна типу покажчик.

В такому випадку ptr “вказує на” pooh. Різниця між двома формами запису: ptr і &pooh, полягає в тому, що ptr – змінна, в той час як &pooh – константа.

Таким чином, якщо, в змінній ptr міститься посилання на змінну pooh, тоді для доступу до значення цієї змінної можна скористатися операцією “непрямої адресації”:

val = *ptr; /* визначення значення, на яке вказує ptr */

Останні два оператори, взяті разом, еквівалентні наступному:

val = pooh;

Приклад:

pooh = 22;

ptr = &pooh; /* покажчик на pooh */

val = *ptr;

 

Результат виконання даного фрагмента – присвоєння значення 22 змінній val.

Переважно виконання функції не робить ніякого впливу на значення змінних програми яка здійснює виклик. Щоб мати можливість безпосередньо змінювати значення змінних програми яка здійснює виклик, необхідно використовувати покажчики в якості аргументів. Це може виявитися необхідним у випадку, якщо у програму що здійснює виклик необхідно передати більше ніж одне значення.

Приклад:

 

/* Програма яка здійснює обмін значеннями між двома змінними x i y*/




Поделиться с друзьями:


Дата добавления: 2015-01-03; Просмотров: 466; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.