Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
texpr_wpor.docx
Скачиваний:
20
Добавлен:
13.03.2015
Размер:
113.63 Кб
Скачать

Бірөлшемдімассивтерде көрсеткіштерді қолдану.

Массивтер жєне кµрсеткіштер

Массивтерді баяндаѓанда мєліметтер типі жєне талап етілетін жады класы кµрсетіледі. Ќарапайым айнымалылар жаѓдайындаѓы ќарастырылѓан сєйкес ќасиеттер массивтерге де баяндаѓанда ќолданылуы м‰мкін. Массивті баяндауѓа мысал ќарастырайыќ:

Int b[30]; /*30 б‰тін элементтен т±ратын сыртќы массив*/

float a[30]; /*30 саннан т±ратын float типті автоматты массив*/

static char c[20]; /* 20 символдан т±ратын статикалыќ массив*/

extern b[ ]; /*сыртќы массив; µлшемі жоѓарыда келтірілген*/}

Жадылар класына байланысты сыртќы, статикалыќ, автоматты жєне регистрлік массивтер болып ерекшеленеді. Массивті инициалдауды ќарастырайыќ. Типті баяндауда тек ќана сыртќы жєне статикалыќ массивтерді ѓана инициалдауѓа болады. Сыртќы жєне статикалыќ массивтерді баяндау келісім бойынша осы массив элементтерініњ нµлденуіне єкеледі. (Сонымен, статикалыќ жєне сыртќы массивтерді нµлдеу ‰шін ешќандай шара ќолданбауѓа болады). Сыртќы массивтіњ инициалдануына мысал ќарастырайыќ, массив элементтерініњ мєндері потоктыњ єрбір тобыныњ студенттер саны болады.

Мысал

int stud[10]={10,12,14,16,12,10,17,10,15,13};

main( )

{ int i;

extern int stud{ }; /*мањызды емес баяндалу*/

for (i=0; i<10; i++)

printf(“Группа N %d %d студентов”, i+1, stud[i]); }

stud[10] массиві жаќшаларѓа алынѓан тізіммен инициалдаѓан, тізімніњ элементтерін ‰тір арќылы бµлген. Тізімдегі элементтер саны массивтіњ µлшеміне сєйкес болуы ќажет. Егер Тізімдегі элементтер саны массивтіњ µлшемінен аз болса, онда ќалѓан массив элементтері нµлдік мєндерге ие болады. Егер тізімде элементтер кµп болса, онда ќате тура хабарланады.

Массив элементтерін инициалдауды келесі т‰рде де кµрсетуге болады.

Мысал

int stud[ ]={10,12,15,16,17,11,18,10};

main ( )

{ int i;

extern int stud [ ];

for (i=0; i<sizeof stud/(sizeof(int)); i++)

printf (“Группа N %d %d студентов.\n”,i+1,stud[i]); }

Егер массивті инициалдауѓа бос батырмалар лар ќолданылса, онда компилятор µзі тізімдегі элементтер санын аныќтайды жєне ол ‰шін ќажетті µлшемдегі массивті белгілейді. Массивтіњ µлшемін аныќтау ‰шін sizeof операторы ќолданылады. sizeof операторы объектініњ немесе типтіњ µлшемін байтпен аныќтайды. Массив элементтерініњ санын аныќтау ‰шін массив орын алатын жалпы байттар санын 2-ге бµледі (берілген ж‰йеде int типті єрбір элементтіњ µлшемі 2 байтќа тењ). Жалпы жаѓдайда сєйкес типтіњ sizeof айнымалысыныњ мєніне бµледі.

Массивтердіњ кµрсеткіштері

Жоѓарыда айтылѓандай, кµрсеткіштер символдыќ адрестермен ж±мыс істеуді ±йымдастырады. (Б±л жаѓдайда массивті µњдеу тиімдірек ±йымдасады). Массивті белгілеу жасырын т‰рде кµрсеткіштерді ќолдану болып табылады.

Мысалы, массивтіњ аты сондай-аќ бірінші элементті аныќтайды, яѓни егер a[] массив болса, онда біріншісі a[0].

Екі мєнде барлыќ программаныњ барысында µзгермейтін болѓандыќтан, кµрсеткіш типті константа болады. Оларды кµрсеткіш типті айнымалыѓа (мєн ретінде) меншіктеуге болады жєне айнымалыныњ мєнін µзгертуге болады. Кµрсеткіштіњ мєніне сан ќосылатын мысалды ќарастырайыќ.

Мысал

{ int a[4], *pti, i;

float b[4], *ptf;

pti=a; /*массив кµрсеткішіне адресті меншіктейді */

ptf=b;

for (i=0, i<4,i++)

printf(“кµрсеткіш +%d: %8u %10u\n”, i, pti+i, ptf+i); }

Нєтиже:

кµрсеткіш +0: 56014 56026 (массивттердіњ бастапќы адрестері)

кµрсеткіш +1: 56016 56030 (адреске бірді ќосќандаѓы нєтиже)

кµрсеткіш +2: 56018 56034

кµрсеткіш +3: 56020 56038

Екі µлшемді массивтермен ж±мыс істегенде кµрсеткіштерді ќолдану. a[3][2] массивін ќарастырамыз.

Мысал

int a[3][2]; /* 3 жолдан жєне 2 баѓаннан т±ратын int типті массив */

int *pri; /* б‰тін типке сілтейді */

pri=a; /* кµрсеткіш a[0][0] элементіне сілтейді */

a==&a[0][0]; /* pri+1 кµрсеткіші a[0][1] элементке сілтейді */

Б±л массивті ќарастырѓанда келесі тењдеулер орынды:

pri==&a[0][0]; /* 1-ші жол, 1-ші баѓан */

pri+1==&a[0][1]; /* 1-ші жол, 2-ші баѓан */

pri+2==&a[1][0]; /* 2-ші жол, 1-ші баѓан */

pri+3==&a[1][1]; /* 2-ші жол, 2-ші баѓан */

pri+4==&a[2][0]; /* 3-ші жол, 1 -ші баѓан */

pri+5==&a[2][1]; /* 3-ші жол, 2-ші баѓан */

Екі µлшемді массив бір µлшемді массивтерден ќ±рылѓан массив ретінде ќарастырылуы м‰мкін. Яѓни, берілген екі µлшемді массив 3 жолдан т±рады, ал єрбір жол 2 элементтен т±ратын массив болып табылады. Бірінші жолдыњ аты a[0], екінші жолдыњ аты a[1 ], ‰шінші жолдыњ аты a[2]. Массивтіњ аты берілген массивтіњ кµрсеткіші болып табылады, яѓни ол массивтіњ 1-ші элементіне сілтейді. Сонымен келесі тењдеулер орынды:

a[ 0]==&a[0][0]

a[ 1]==&a[1][0]

a[ 2]==&a[2][0].

Б±л ќасиет бір µлшемді массивке арналѓан функцияны екі µлшемді массивпен ж±мыс істеу ‰шін м‰мкіндік береді.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]