Лабораторна робота № 17. Показники та масиви

Мета:

Здобути навики використання середовища розробки мови C++, познайомитися з показниками та з масивами, здобути навички написання програм.

Короткі теоретичні відомості до роботи.

Показником на масив є саме ім’я масиву, а також вказівка на його перший елемент. Наприклад:

float array[10], *mP;

mP = array; або mP = &array[0];

Зміна значення показника переводить його на інший елемент масиву.

mP++; //переводить показник на наступний елемент масиву array[1]

mP+=5; //переводить показник на елемент масиву array[6]

--mP; //переводить показник на елемент масиву array[5]

Показник – ім’я масиву має по визначенню атрибут const і не в вимозі змінити його. Така запис, наприклад, не вірна: array++;

Різниці показників,наприклад, int k=mP - array; визначає різницю між номерами елементів, на котрі вказують mP (№6) і array (№1), тобто k=5.

Розглянемо приклад операції присвоєння і порівняння показників:

float *nP; nP=mP;

if (nP==mP) cout<<”показники співпадають”;

Показники на один й тот же тип можуть бути зібрани у масив:

float *mmP[10];

Розглянемо у наступній програмі дії з показниками.

//файл PART3\3_02.ccp – показники та масиви

#include “c:\cpp\subprog\\roll.h”

#include “c:\cpp\subprog\\roll_txt.h”

#include <iomanip.h>

#define N 10

main() { clrscr(); float array[N], *mP, mmP[N];

for (i=0; i<N; i++) {

array[i]= PI *i*i+1; //присвоєння значень вхідному масиву

mmP[i]=&array[i]; /*і масиву показників */ };

mP=&array[0]; //або mP=array; -адресація

cout<<”\ nадрес масиву array: “;

cout <<”\narray=”<< array<<”\narray[0]=”<< &array[0]

<<”\nmP= ”<<mP; /*три варіанти визначення

адреси масиву, тобто адреси першого елемента */

if (array= =&array[0]) //порівняння показників

cout <<”\n показник на перший елемент еквівалентний імені масиву”;

k=&array[5] – array;

cout <<”\n\n різниця показників\n&array[5] – array=”<<end1;

cout <<”\n ВИВІД ЕЛЕМЕНТІВ МАСИВУ array”;

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

cout <<”\n”<<i // індекс елемента масиву

<<setw (11)<< array[i] //по значенню

<<setw (11)<< *mP++ /* по показнику на масив з послідовним змішенням

на значення індексу */

<<setw (11)<< *mmP[i]; /*по показнику на кожній елемент */

cout <<”\n\n порівняння показників”;

float *nP; nP= array;

cout<<”\narray=” << setw (13)<< array<<”\n nP=”<<setw(13)<<nP;

pause(0); return 0; }


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow