B.I.Березін,С.Б.Березін(С.83) МАСИВИ І ПОКАЖЧИКИ
Раніше ми ввели типи даних в мові С, які називаються іноді базовими або
вбудованими. На основі цих типів даних мова С дозволяє будувати інші типи
даних і структури даних. Масив — один з найбільш простих і відомих структур
даних. Під масивом в мові С розуміють набір даних одного і того ж типу,
зібраних під одним ім'ям. Кожний елемент масиву визначається ім'ям масиву і
порядковим номером елемента, який називається індексом. Індекс в мові С
завжди ціле число.ОГОЛОШЕННЯ МАСИВУ В ПРОГРАМІ
Основна форма оголошення масиву розмірності N така:тип <ім'я масиву>[размер1][размер2]…[размерН]
Частіше за все використовуються одновимірні масиви:
тип <ім'я масиву> [розмір] ;
тип — базовий тип елементів масиву, розмір — кількість елементів
одновимірного масиву.
При описі двовимірного масиву оголошення має наступний вигляд:тип <ім'я масиву> [размері][размер2];
У цьому описі можна трактувати оголошення двовимірного масиву як
оголошення масиву масивів, т. е. масив розміру [размер2], елементами якого
є одновимірні масиви <ім'я масиву>[размер1].
Розмір масиву в мові С може задаватися константою або константним
виразом. Не можна задати масив змінного розміру. Для цього існує окремий
механізм, званий динамічним виділенням пам'яті.
ОДНОВИМІРНІ МАСИВИ
У мові С індекс завжди починається з нуля. Коли ми говоримо про перший
елемент масиву, то маємо на увазі елемент з індексом 0. Еслі ми оголосили
масивint a[100] ;
це означає, що масив містить 100 елементів від а[0] до а[99]. Для
одновимірного масиву легко підрахувати, скільки байт в пам'яті буде займати
цей масив:кільк.байтів=<розмір базового типу>*<кільк.елементів>.
У мові С під масив завжди виділяється безперервне місце в оперативній
пам'яті.
У мові С не перевіряється вихід індексу за межі масиву. Якщо масив
а[100] описаний як цілочисельний масив, що має 100 елементів, а ви в
програмі вкажете а[200], то повідомлення про помилку не буде видане, а як
значення елемента а[200] буде видано деяке число, що займає відповідні 2
байти. Можна визначити масив будь-якого визначеного раніше типу, наприкладunsigned arr[40], long double al[1000], char ch[80].
|/*поміняти місцями max з min*/ |// Сортування і програвання масиву |
|#include <iostream.h> main() |#include<iostream.h> #include<dos. h> |
|{ int i,j,a[10], max. nmax, min, |#' nclude<conio. h> void main() { int |
|nmin, temp; clrscr(); for (i=0; i<10;|temp, і, j, a[ 1 0]; clrscr(); for |
|i++) сіп » a[i]; max=min=a[0]; |(i=0;i<10;i++) сіп » a [ і ]; for |
|nmax=nmin=0; for (i=0; i<10; i++) |(i=0;i<9;i++) for (j=i+1 ;j<10;j++) if |
|if(a[i]>max) { max=a[i]; nmax=i;} |(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; |
|else if(a[i]<min) {min=a[i], nmin=i;}|a[j]=temp; } for (i=0;i<1 0;i++) { cout|
|tern p= a[n m ax]; a[n max]=a[nm і |« a[i]«» «; sound(a[i]*80); delay(500);|
|n]; a[nm і n]=temp; for (i=0; i<10; |nosou nd(); } getch(); } |
|i++) cout « a[i] «» «; } | |МАСИВИ СИМВОЛІВ. РЯДКИ
Однак масиви типу char — символьні масиви — займають в мові особливе
місце. У багатьох мовах е спеціальний тип даних — рядок символів (string).
У мові С окремого типу рядка символів немає, а реалізована робота з рядками
шляхом використання одновимірних масивів типу char. У мові С символьний
рядок — це одновимірний масив типу char, що закінчується нульовим байтом.
Нульовий байт — це байт, кожний біт якого рівний нулю. Для нульового байта
визначена спеціальна символьна константа ' ' . Це потрібно враховувати
при описі відповідного масиву символів. Так, якщо рядок повинен містити N
символів, то в описі масиву потрібно указати N+1 елемент.
Наприклад, описchar str[11] ;
передбачає, що рядок містить 10 символів, а останній байт зарезервований
під нульовий байт. Звичайно, ми задали звичайний одновимірний масив, але
якщо ми хочемо трактувати його як рядок символів, то це буде рядок максимум
з 10 елементів.
Хоча в мові С немає спеціального типу рядка, мова допускає рядкові
константи. Рядкова константа — це список літер, взятих в подвійні лапки.
Наприклад,«Borland C++ «, «Це рядкова константа».
У кінець рядкової константи не треба ставити символ '