Мета:
Здобути навики використання середовища розробки мови 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; }