У вас вопросы?
У нас ответы:) SamZan.net

я що викликана отримує свою тимчасову копію кожного аргумента а не його адресу це означає що викликана фя

Работа добавлена на сайт samzan.net: 2016-06-09

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 3.2.2025

5 Аргументи функцій Передаються по значенню, тобто ф-я, що викликана отримує свою тимчасову копію кожного аргумента, а не його адресу, це означає, що викликана ф-я не може викликати на вих. аргумент в ф-ї, що викликається. В ф-ї кожен аргумент є локальною змінною, яка ініціалізована тим значенням з яким до цієї ф-ї звернулися. Якщо в якості аргумента виступає ім’я масиву, а самі елементи не копіюються ф-я може змінювати елементи масиву, використовуючи індексацію і адресу початку. В мові Сі не можна написати ф-ю з довільною кількістю аргументів, тобто не існує механізму, який би дозволив створити ф-ю, яка мала б 3 або 10 змінне число аргументів, вони визначені завчасно.

Зовнішні змінні Для того, щоб використати змінні вони повинні бути визначені до того, як вони використ., але не обов’язково в початку програми. Визначення змінної викликає виділення пам’яті для її збереження. Клас пам’яті, що виділяється визначає специфікатор класу пам’яті і визначає час життя і область видимості змінної, пов’язаної з поняттям блоку програми.

6 Зовнішні змінні в main, getline та copy означено в перших рядках у прикладі вище, що вказує на їхній тип і відводить місце для зберігання. Синтаксично, зовнішні означення схожі на означення локальних змінних, але оскільки це відбувається за межами функцій, змінні стають зовнішніми. Перед тим, як якась функція може користуватися зовнішньою змінною, назва змінної повинна стати відомою функції; оголошення будуть таким самим як дотепер, за винятком доданого слова extern.

В деяких випадках, оголошення extern можна опустити. Якщо означення зовнішньої змінної відбувається у вихідному файлі перед її використанням в якійсь функції, тоді відпадає потреба в оголошенні extern всередині функції. Таким чином, оголошення extern у main, getline іcopy зайві. В дійсності, загальною практикою є розміщення всіх означень зовнішніх змінних напочатку вихідного файла, уникаючи таким чином оголошень extern.

7 Статичні змінні створюються тільки один раз й ініціалізуються нульовими значеннями свого типу. Якщо змінна є локальною, то вона створюються при першому входженню в програмний блок (як правило тіло функції). По завершенню виконання програмного блоку вона не знищується, а продовжує існувати. Треба пам’ятати, що доступна вона є тільки в межах блоку, в якому вона створювалась. А тому за межами блоку її використовувати не можна.При наступному переході управління до даного програмного блоку статична локальна змінна вже не буде створюватись ще раз. При цьому вона буде зберігати значення при якому завершилось попереднє виконання даного програмного блоку. Усі статичні змінні знищуються при завершенні виконання програми.

   Регістрові змінні. Специфікатор registe наприклад register double x;

   Така декларація говорить компілятор про потребу зберігати значення цієї змінної не в області пам’яті , а безпосередньо в регістрах центрального мікропроцесора. Очевидно, що таки  спосіб зберігання пришвидшує усі маніпуляції з такою змінною, а тому пришвидшує виконання програми, оскільки не має затримок на перенесення даних з області пам’яті в регістри і назад. Проте використання специфікатора register не забезпечує гарантованого зберігання значення в регістрах. Тобто register – це лише наміри. Компілятор сам прийме рішення, чи можна значення даної змінної зберігати в регістрах чи ні. Ніяких додаткових рекомендацій, які б гарантували дію специфікатора register не існує. Єдине, що тут треба пам’ятати, що розмір змінної не повинен бути великим. А тому на сьогодні цей специфікатор використовується лише при малобайтових маніпуляціях даними, або при написанні програм системної логіки.

8 Блок в програмуванні (англ. block) — замкнена складова частина програми, яка являє собою сукупність інструкцій, які утворюють сферу дії деяких ідентифікаторів (імен).Поняття «блок» відповідає поняттю «підзадача» або «підалгоритм». Використовуючи блоки, можна розділити задачу на частини, які допускають автономне програмування. Кожен блок вводить новий рівень позначень шляхом описання ідентифікаторів і міток. В блоці може міститись в якості оператора інший блок. Блочна структура програми дозволяє при розподілі пам'яті відводити одні і ті самі поля пам'яті машини для зберігання величин, описаних в блоках, що не перетинаються, і, таким чином, сприятиме економному розподілу пам'яті. У багатьох сучасних мовах програмування блоки використовуються для описання тіла процедур, циклів, для визначення дій в операторах умовного переходу, а також можуть використовуватися самі по собі.

9 Препроцесор — програма, яка виконує попередню обробку даних, для того, щоб вони могли використовуватись іншою програмою, наприклад, такою як компілятор. Про дані на виході препроцесора говорять, що вони знаходяться в препроцесованій формі, придатній для обробки подальшими програмами (компілятор). Результат і вид обробки залежать від виду препроцесора; так, деякі препроцесори можуть тільки виконати просту текстову підстановку, інші здатні за можливостями порівнятися з мовами програмування. Найчастіший випадок використання препроцесора — обробка початкового коду перед передачею його на наступний крок компіляції. Мови програмування C/C++ і система комп'ютерної верстки TeX використовують препроцесори, що значно розширяють їхні можливості. Назва широко поширеноїскриптової мови програмування PHP є рекурсивним акронімом 'PHP: Hypertext Preprocessor'.

10 Макровизначення (макропідстановка або просто макрос) в мові С(С++) – це вираз, який при компіляції файлу з кодом програми підставляється замість імені, що визначає дану макропідстановку. Макровизначення обробляються препроцесором – програмою, яка аналізує програмний код і готує його для роботи компілятора. Команди, які має обробляти препроцесор, записуються у вигляді директив. Директиви препроцесора починаються із знака #:

#define <ідентифікатор>  <текст макросу>

Приклади:

#define MAX_SIZE 10

int main ()

{

 int arr [MAX_SIZE]; // MAX_SIZE заміняється на 10

 // інші інструкції

}

11 Типова машина має масив послідовно нумерованих або адресованих комірок (секцій) пам'яті, якими можна орудувати окремо або прилеглими групами. Поширеним випадком є, коли один байт може бути char, тоді як пара однобайтових комірок розглядається як коротке ціле (short int), а чотири суміжних байти утворюють довге ціле. Покажчик — це група комірок (часто дві або чотири), що можуть утримати адресу.

12 Покажчик - це змінна, яка містить адресу змінної. Так як покажчик - це адреса деякого об'єкта, то через нього можна звертатися до даного об'єкта.В СІ існує тісний зв'язок між покажчиками й масивами. Будь-який доступ до елемента масиву, здійснюваний операцією індексування, може бути виконаний за допомогою покажчика.

Декларація

int a [10];

визначає масив а розміру 10, тобто блок з десяти послідовних об'єктів, представлених на малюнку, з іменами a [0], a [1], ..., a [9].

Запис a [i] відсилає нас до i-му елементу масиву. Якщо ра є вказівник, тобто визначений як int * pa;, то в результаті присвоювання

pa = & a [0];

pa буде вказувати на нульовий елемент масиву а; інакше кажучи, ра буде містити адресу елемента a [0] (див. рис.). Тепер присвоювання

x =* pa;

буде копіювати вміст а [0] в х.

Якщо ра вказує на деякий елемент масиву, то ра +1 за визначенням вказує на наступний елемент (див. рис.). Таким чином, якщо ра вказує на a [0], то * (ра +1) є вміст a [1] , ра +1 - адреса a [1], * (ра + i) - вміст a [i].

Оскільки ім'я масиву є не що інше як адресу його початкового елемента, присвоювання

pa = & a [0];

можна також записати в наступному вигляді:

pa = a;

Так як ра - покажчик, то у виразах його можна використовувати з індексом, тобто запис pa [i] еквівалентна запису * (pa + i). Елемент масиву однаково дозволяється зображати і у вигляді покажчика зі зміщенням, і у вигляді імені масиву з індексом.

Між ім'ям масиву і покажчиком, виступаючим в ролі імені масиву, існує одна відмінність. Покажчик - це змінна, тому можна написати pa = a або pa + +. Але ім'я масиву не є змінною, і запис типу a = pa не допускається. Слід також розрізняти вираження * (a +2) і * a +2: * (а +2) - значення третього елемента масиву а; * а +2 - додавання числа 2 до значення першого елемента масиву.

13 Маючи p як покажчик на певний елемент масиву, p++ здійснить приріст p, тож він вказуватиме на наступний елемент, тоді як p+=n збільшить його настільки, що він вказуватиме на n елементів далі того місця, на яке посилається в дану мить. Ці і подібні конструкції являються найпростішою формою адресної або покажчикової арифметики\

14 Оскільки покажчики — це також змінні, їх можна зберегти в масивах, так само як і інші змінні. Дозвольте нам проілюструвати це шляхом написання програми, що сортує в алфавітному порядку набір рядків тексту. Нам знадобиться таке представлення даних, що успішно і легко справлятиметься з рядками тексту змінної довжини. Саме тут вступають в гру масиви покажчиків. Якщо рядки, які треба посортувати, зберігати від початку до кінця в довгих символьних масивах, тоді до кожного рядка можна мати доступ через покажчик на його перший символ. Самі покажчики також можна зберегти в масиві. Два рядка можна порівняти, передаючи їх покажчики strcmp. Якщо ці два невпорядкованих рядки потрібно поміняти місцями, міняються місцями покажчики з масиву покажчиків, а не самі рядки тексту. В такий спосіб ми можемо уникнути складної проблеми керування збереженням даних і значної ресурсоємкості переміщення самих рядків.

15-16-17 Структура або запис - складений тип даних в програмуванні.

Структура складається з даних різного типу, з якими зручно працювати, як з єдиним блоком. Наприклад, для обліку різних товарів у магазині потрібно знати їхні найменування, ціни, кількість. Усі ці дані можна записати в одну структуру. Наприклад, на мові С така структура матиме вигляд:

struct {

char name[20];

double price;

int quantity;

} A;

Структури широко використовуються в структурному програмуванні. В об'єктно-орієнтованому програмуванні поняття структури розширюються до поняття класу - складеного типу даних, який містить не лише самі дані, а й методи їхньої обробки.

17 Підпрограма (subroutine) - частина програми, яка реалізує певний алгоритм і дозволяє звернення до неї з різних частин загальної (головної) програми. В термінах мов програмування: функції (С), процедури (Pascal), методи (в термінології об'єктно-орієнтованого програмування в мовах C++, Java, С# та ін.).

Підпрограма часто використовується для скорочення розмірів програм в тих задачах, в процесі розв'язання яких необхідно виконати декілька разів однаковий алгоритм при різних значеннях параметрів. Інструкції (оператори, команди), які реалізують відповідну підпрограму, записують один раз, а в необхідних місцях розміщують інструкцію виклику підпрограми.

Набір найвживаніших підпрограм утворює бібліотеку стандартних підпрограм.

В більшості мов програмування високого рівня, підпрограми називаються процедурами та функціями. В залежності від мови програмування, терміни «процедура» та «функція» можуть розрізнятися (як правило, процедурою називають підпрограму, що не повертає результату, тоді як функція має результат і може використовуватись як частина виразу) чи розглядатись як синоніми (зокрема, в мові C, де в початковому варіанті всі підпрограми могли повертати результат, їх здебільшого називають функціями). У об'єктно-орієнтованому програмуванні функції-члени класів називають методами.

18 . Розрядне поле, або просто «поле» для скорочення, являється набором суміжних бітів всередині єдиної, визначеної реалізацією пам'ятової одиниці, яке ми називаємо «словом». Синтаксис означення полів і доступу до них основується на притаманному структурам. Наприклад, означення #define вище можна замінити означеннями трьох полів:

   struct {

       unsigned int is_keyword : 1;

       unsigned int is_extern  : 1;

       unsigned int is_static  : 1;

   } flags;

Це означує змінну під назвою flags, яка містить три 1-бітних поля. Число, яке слідує за двокрапкою відображає ширину поля в бітах. Поля оголошено як unsigned int, щоб упевнитися, що це беззнакові величини.

19 Об'єднання - структура даних, члени якої розташовані по одному і тому ж адресою. Тому розмір об'єднання дорівнює розміру його найбільшого члена. У будь-який момент часу об'єднання зберігає значення тільки одного з членів.

union Some {

   int i;

   double a;

};

Це об'єднання зберігає або ціле число (змінна i), або число з плаваючою точкою (змінна a). Оскільки об'єднання - це вид структури, то в C і C + + до нього звертаються так само, як і до структури: через символ «->» при використанні покажчика, або «.» При використанні звичайної змінної.

20 Уявіть собі завдання по написанню функції month_name(n), яка би повертала покажчик на символьний ланцюжок, який містить назву n-нного місяця. Це являє собою ідеальне примінення внутрішнього статичного масиву. month_name включатиме приватний масив символьних ланцюжків, і повертатиме покажчик на відповідний, коли викликати її. Цей розділ демонструє, як ініціалізувати такий масив назв.

Синтаксис є подібним до попередніх ініціалізацій:

   /* month_name:  повертає назву n-нного місяця */

   char *month_name(int n)

   {

       static char *name[] = {

           "Illegal month",

           "January", "February", "March",

           "April", "May", "June",

           "July", "August", "September",

           "October", "November", "December"

       };

       return (n < 1 || n > 12) ? name[0] : name[n];

   }

Оголошення name являється масивом символьних покажчиків, таким самим як lineptr у прикладі з сортуванням. Ініціалізатором служить список символьних ланцюжків; кожному з них призначено відповідне положення в масиві. Символи i-ного ланцюжка розміщено в певному місці і покажчик на них збережено в name[i]. Оскільки розмір масиву name не вказано, компілятор сам порахує ініціалізатори і заповнить розмір правильним числом.




1. pB Несовместные события ~ такие события появление одного из которых исключает возможность появления дру
2. Дафна і Орфей та Еврідика Джакопо Пері
3. Медицина Казахстана в годы Великой Отечественной Войны
4. ХIквадрат Е Визначения достатнього числа спостережень 3.html
5. Красноярский государственный медицинский университет имени профессора В
6. Уроки по рассказам Андрея Платонова «Корова» и «Июльская гроза»
7. темах подвижной радиосвязи на тему- Расчёт потерь передачи комплексной радиолинии в системах подвижной
8. В течение пяти лет возглавлял кафедру кандидат психологических наук доцент Петров Борис Максимович
9. Расчет устойчивости и риска инвестиционного проекта строительства жилья
10. Основные законы земледелия