Vi fəsil. C++ dilində proqramlaşdırma


Göstəricilər və massivlər



Yüklə 1,02 Mb.
səhifə34/74
tarix04.01.2023
ölçüsü1,02 Mb.
#121980
1   ...   30   31   32   33   34   35   36   37   ...   74
Alqoritmik dillər(C kitab) (10)

6.26.Göstəricilər və massivlər
Massivin adı massivdə göstərici-sabit kimi ifadə edilir. Tutaq ki, proqramda
int x[10];

-massivi elan olunmuşdur. Bu halda x-komputerin yaddaşında massivin 0-cı elementinə olan göstərici olur.


Ona görə də aşağıdakı münasibət doğrudur:
x=&x[0];
Buradan alınır ki, indeksin köməyi ilə massivin elementinə müraciətdən əlavə olaraq göstəricilərdən də istifadə etməklə aşağıdaki qaydada müraciət etmək olar:
massivin adı[indeks]-bu yazılışa
*(massivin adı+indeks)-yazılışı ekvivalentdir
Məsələ, yuxarıda təsvir edilən x-massivinin elementlərinə aşağıdaki kimi müraciət etmək olar:
x[5] və ya *(x+5) və ya *(5+x).
Göstəricilər toplama əməlini öz qaydalarına uyğun olaraq yerinə yetirirlər. x-göstəricisi tam tipə malikdir. x+5 əməli ünvanı 10 vahid artırır.
Dəyişənlərdən aydın olur ki, niyə massivin birinci elementinin indeksi sıfra bərabərdir. Birinci elementin ünvanı massivin ünvanı ilə üst-üstə düşür:
x[0]==*(x+0);
Massivin adı göstərici-sabit olduğuna görə onu proqramda dəyişmək olmaz, yəni başqa bir element mənimsətmək olmaz. Məsələ, tutaq ki, strukturu eyni olan iki massiv təsvir edilmişdir:
int x[10], y[10];


x=y; - mənimsətmə operatoru səhv olar. Bu yazılış Pascal dilində doğrudur (massivin birinin elementləri digərinə mənimsədilir). C++ dilində isə bir massivin elementlərini digər massivə mənimsətmək üçün göstərilən yazlışdan istifadə etmək olmaz. Bu halda massivin elementləri digər massivə element-element mənimsədilir.
İndi iki ölçülü massivə baxaq:
int P[5][10];
Bu massiv 5-sətirdən və hər sətirdə 10 elementdən ibarətdir. İki ölçülü massiv yaddaşda sətirlərlə yeerləşir. Yuxarıda göstərildiyi kimi P göstərici-sabitdir və P-massivin ünvanını müəyyən edir. Yəni p[0][0]-ın ünvanı göstərir.
İndekslə göstərilən p[i]-adı massivin 2-ci sətrini göstərir. Göstəricidən istifadə edərək p[i]-adına aşağıdaki kimi müraciət etmək olar:
*(P+i*10);
P[2][4] elementinə müraciəti *(P+2*10+4) kimi yazmaq olar. Ümümi halda aşağıdakilar ekvivalentdir:
P[i][j] və *(P+i*10+j).
Axırıncı ifadəni sətrin uzunluğunu göstərmədən iki mötərizədən istifadə etməklə aşağıdaki kimi də yazmaq olar:
*(*(P+i)+j).
Oxşar qaydada A[i][j][k]-üç ölçülü massivinin elemetlərinə aşağıdaki qaydada müraciət etmək olar:
*(*(*(A+i)+j)+k), və s.

Yüklə 1,02 Mb.

Dostları ilə paylaş:
1   ...   30   31   32   33   34   35   36   37   ...   74




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin