Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

13-ameliy jumis

.pdf
Скачиваний:
0
Добавлен:
25.12.2023
Размер:
429.52 Кб
Скачать

13-ÁMELIY SABAQ. KÓRSETKISHLER HÁM DINAMIKALÍQ YAD PENEN ISLEW. KÓRSETKISHLER HÁM DINAMIKALÍQ YAD PENEN ISLEWGE BAYLANÍSLÍ MÁSELELER SHESHIW.

Jumıstıń maqseti: C++ tilinde kórsetkishlerdi ańlatıw, járiyalaw, olar ústinde ámeller islew.

Teoriyalıq bólim: Programma tekstinde ózgeriwshi járiyalanǵanda, kompilyator ózgeriwshige yadtan orın ajıratadı. Basqasha aytqanda, programma kodı yadqa júklengen waqıtta berilgenler ushın, olar jaylasqan segmenttiń basına qarata jıljıwı, yaǵnıy salıstırmalı adresti anıqlaydı hám obyekt kod payda etiwde ózgeriwshi ushıraǵan orınǵa onıń adresin jaylastıradı.

Ulıwma alǵanda, programmadaǵı turaqlılar, ózgeriwshiler, funkciyalar hám klass obyektler adreslerin yadtıń óz aldına orında saqlaw hám olar ústinen ámeller orınlawı múmkin. Mánisleri adres bolǵan ózgeriwshilerge kórsetkish ózgeriwshiler delinedi.

Kórsetkish úsh túrde bolıwı múmkin:

-qandayda bir obyektke, atap ótsek ózgeriwshige kórsetkish;

-funkciyaǵa kórsetkish;

-void kórsetkish.

Kórsetkishtiń bul qásiyetleri onıń qabıl etiliwi múmkin bolǵan mánislerde parıqlanadı.

Kórsetkish álbette qandayda bir tipke baylanısqan bolıwı kerek, yaǵnıy ol kórsetken adreske qandayda bir mánis jaylasıwı múmkin hám bul mánistiń yadta qansha orın iyelewi aldınnan belgili bolıwı shárt.

Ámeliy bólim:

C++ tilinde kórsetkishler basqa ózgeriwshilerdiń yad adreslerin saqlaytuǵın ózgeriwshiler bolıp tabıladı.

C++ tilinde adress

Eger bizde ózgeriwshi programmamızda var bolsa, &var onıń adresin yadımızda beredi. Mısalı,

1-mısal: C++ tilinde ózgeriwshi adreslerdi basıp shıǵarıw

#include <iostream> using namespace std;

int main()

{

//ózgeriwshilerdi járiyalaw int var1 = 3;

int var2 = 24; int var3 = 17;

//var1 shıǵarıw adresi

cout << "var1 adresi: "<< &var1 << endl;

// var2 shıǵarıw adresi

cout << " var2 adresi: " << &var2 << endl;

// var3 shıǵarıw adresi

cout << " var3 adresi: " << &var3 << endl;

}

Nátiyje:

var1 adresi: 0x7ffeff6177dc

var2 adresi: 0x7ffeff6177d8

var3 adresi: 0x7ffeff6177d4

C++ kórsetkishleri

Joqarıda aytılǵanday kórsetkishler mánislerdi emes, adreslerdi saqlaw ushın qollanıladı. Kórsetkishlerdi tómendegishe járiyalaymız.

int *pointVar;

Mine biz int tipindegi pointVar kórsetkishti járiyaladıq. Sonday-aq kórsetkishlerdi keyingi usıl menen járiyalay alamız.

int* pointVar; // preferred syntax

Kórsetkishlerdi járiyalawdıń taǵı bir mısalın alayıq.

int* pointVar, p;

Mine biz pointVar kórsetkishti járiyaladıq. hám ádettegi ózgeriwshi.

Esletpe: * operatorı kórsetkishlerdi járiyalaw ushın maǵlıwmatlar tipinen keyin paydalanıladı.

Kórsetkishlerge adreslerdi tayınlaw

Kórsetkishlerge adreslerdi qalay tayınlay alamız:

int* pointVar, var; var = 5;

// avr adresin pointVar kórsetkishine tayınlań pointVar = &var;

Bunda var 5 ózgeriwshige tayınlanadı. Al. var adreske pointVar kodı bar kórsetkish pointVar = &var tayınlanadı.

Kórsetkishlerden paydalanıp adresten mánis alıń

Kórtsetkish penen kórsetilgen mánisti alıw ushın biz * operatorlardı qollanamız. Mısalı:

int* pointVar, var; var = 5;

//var adresin pointVar-ǵa tayınlań pointVar = &var;

//pointVar arqalı kórsetilgen qatnas mánis

cout << *pointVar << endl; // Output: 5

Joqarıdaǵı kodta var adresi tayınlanǵan pointVar. *pointVar adreste saqlanǵan mánisti alıw ushın qollandıq. * kórsetkishleri menen paydalanılǵanda, ol silteme

operatorı dep ataladı. Ol kórsetkishte jumıs isleydi hám kórsetkishte saqlanǵan adresi menen kórsetilgen mánisti beredi. Bul, *pointVar = var.

2-mısal: Kórsetkishtiń jumısı:

#include <iostream> using namespace std; int main() {

int var = 5;

//kórsetkishtiń ózgeriwshi mánisin járiyalaw int* pointVar;

//var-dıń adresi

pointVar = &var;

//var-dı basıp shıǵarıw mánisi cout << "var = " << var << endl;

//var-dı basıp shıǵarıw mánisi

cout << "Address of var (&var) = " << &var << endl

<<endl;

//pointVar kórsetkishin basıp shıǵarıw cout << "pointVar = " << pointVar << endl;

//pointVar points adresiniń mazmunın basıp shıǵarıw

cout << "Content of the address pointed to by pointVar (*pointVar) = " << *pointVar << endl;

return 0;

}

C++ te kórsetkishler menen jumıs islew.

Kórsetkishlerdiń adresin ózgertiw

int var = 5; int* pointVar;

//assign address of var pointVar = &var;

//change value at address pointVar *pointVar = 1;

cout << var << endl; // Output: 1

3-mısal: Kórsetkishler menen kórsetilgen mánislerdi ózgertiw

#include <iostream> using namespace std; int main() {

int var = 5; int* pointVar;

//store address of var pointVar = &var;

//print var

cout << "var = " << var << endl;

// print *pointVar

cout << "*pointVar = " << *pointVar << endl << endl;

cout << "Changing value of var to 7:" << endl;

//change value of var to 7 var = 7;

//print var

cout << "var = " << var << endl;

// print *pointVar

cout << "*pointVar = " << *pointVar << endl << endl;

cout << "Changing value of *pointVar to 16:" << endl;

// change value of var to 16

*pointVar = 16;

// print var

cout << "var = " << var << endl;

// print *pointVar

cout << "*pointVar = " << *pointVar << endl; return 0;

}

Соседние файлы в предмете Программирование на C++