Реферат: Массивы 2
for (j=0;j<4;j++)
printf ("%4d", a[i][j]);
printf("\n");
}}
Символьні масиви можуть ініціалізувати як звичайний масив:
char str[15]={'В', ' о ' , ' г ' , ' 1 ' , ' а ' , ' n ' , ' d' , ' ',' С',^',^'};
а можуть - як рядок символів:
"char str[15]= Borland C++";
Відмінність цих двох способів полягає в тому, що у другому випадку буде доданий ще і нульовий байт. До того ж другий спосіб коротше. Допускається також оголошення і ініціалізація масиву без явної вказівки розміру масиву. Наприклад, для виділення місця під символьний масив звичайним способом
char str[80]= "Це оголошення і ініціалізація масиву символів";
ми повинні вважати кількість символів в рядку або указати явно більший розмір масиву.
При ініціалізації масиву без вказівки його розміру
char str[ ]= "Це оголошення і ініціалізація масиву символів";
компілятор сам визначить необхідну кількість елементів масиву, включаючи нульовий байт. Можна оголошувати таким же способом масиви будь-якого типу:
int mass []={!, 2, 3, 1, 2, 3, 4};
Від LG: При ініціалізації можна не вказувати розмірність масиву, вона обчислюється автоматично (проте для двовимірних масивів кількість стовпців треба указати), а при оголошенні - обов'язково. При оголошенні масивів з невідомою кількістю елементів можна не вказувати розмір тільки в самих лівих квадратних дужках.
ПОКАЖЧИКИ І АДРЕСИ (Керніган, Рітчі і Б.І.Березін,С.)(Б.Березін)
Пам'ять машини являє собою масив послідовно розташованих і пронумерованих комірок, з якими можна працювати окремо і зв'язаними ділянками. Покажчик - це група комірок в пам'яті комп'ютера, в яких може зберігатися адреса.
Унарний оператор & видає адресу об'єкта, так що інструкція
р=&а;
привласнює адресу комірки а змінній р (тепер р вказує на а або посилається) .
Оператор & застосовується тільки до об'єктів, розташованих в пам'яті: до змінних і елементам масивів. Його операндом не може бути ні вираз, ні константа, ні регістрова змінна.
Унарний оператор * є оператор розкриття посилання. Застосований до покажчика, він видає об'єкт, на який даний покажчик посилається.
ОГОЛОШЕННЯ ПОКАЖЧИКІВ
Якщо змінна буде покажчиком, то вона повинна бути оголошена таким чином:
тип *<ім'я змінної>;
У цьому оголошенні тип - деякий тип мови С, визначальний тип об'єкта, на який вказує покажчик (адреса якого містить); * - означає, що наступна за нею змінна є покажчиком.
ОПЕРАЦІЇ НАД ПОКАЖЧИКАМИ
З покажчиками пов'язані дві спеціальні операції.: & і *. Обидві ці операції є унарними, т. е. мають один операнд, перед якими вони ставляться. Операція & відповідає операції "взяти адресу". Операція * відповідає словам "значення, розташоване за вказаною адресою" .
Особливість мови С полягає в тому, що знак * відповідає двом операціям, що не мають один до одного ніякого відношення: арифметичній операції множення і операції взяти значення. У той же час сплутати їх в контексті програми не можливо, оскільки одна з операцій унарна (містить один операнд), інша - множення - бінарна (містить два операнди). Унарні операції & і * мають найвищий пріоритет нарівні з унарним мінусом.
В оголошенні змінної, що є покажчиком, дуже важливий базовий тип. Якщо покажчик має базовий тип int, то змінна займає 2 байти, char - 1 байт тощо. Приклад.
int а=3, Ь=5;
int *р;
р = &а; /* тепер р вказує на а*/ Ь = *р; /* b тепер дорівнює З*/ *р= 0; /*а тепер дорівнює О*/
&*а => а - розадресація.
Унарні оператори * і & мають більш високий пріоритет, ніж арифметичні оператори:
b = *р + 1 (взяти те, на що вказує р, додати до нього 1, а результат привласнити змінній b.
До покажчиків можна застосувати операцію привласнення. Покажчики одного і того ж типу можуть використовуватися в операції привласнення, як і будь-які інші змінні. Розглянемо приклад. #include <stdio. h> void mai n() { int x= 1 0;
int *p, *g;
p=&x;