37 / 90

C++ Pointers to Structure

C++ struktura ko'rsatkichlari

pointer o'zgaruvchisi nafaqat o'rnatilgan types ( int , float , double va boshqalar) uchun yaratilishi mumkin, balki ular structure kabi foydalanuvchi tomonidan belgilangan turlar uchun ham yaratilishi mumkin.

Ko'rsatkichlar nima ekanligini bilmasangiz, C++ pointers ga tashrif buyuring.

Misol: Strukturaga ko'rsatkichlar

example.cpp
#include <iostream>
using namespace std;

struct Distance {
    int feet;
    float inch;
};

int main() {
    Distance d;
    Distance* ptr = &d;
    
    cout << "Enter feet: ";
    cin >> (*ptr).feet;
    cout << "Enter inch: ";
    cin >> (*ptr).inch;
 
    cout << "Displaying information." << endl;
    cout << "Distance = " << (*ptr).feet << " feet " << (*ptr).inch << " inches";

    return 0;
}

Chiqish

kod
Enter feet: 4
Enter inch: 3.5
Displaying information.
Distance = 4 feet 3.5 inches

Bu erda d o'zgaruvchining manzili ptr ko'rsatkich o'zgaruvchisida saqlanadi, ya'ni ptr d o'zgaruvchiga ishora qiladi.

example.cpp
Distance* ptr = &d;

Keyin d o'zgaruvchining a'zo funksiyasiga ko'rsatkich yordamida murojaat qilinadi.

example.cpp
cin >> (*ptr).feet;

[!NOTE] Eslatmalar: Ushbu dasturda ptr ko'rsatkichi d o'zgaruvchisiga ishora qilgani uchun (*ptr).inch va d.inch ekvivalentdir. Xuddi shunday, (*ptr).feet va d.feet ham ekvivalentdir. . operatori * operatoridan yuqori precedence ga ega bo'lgani uchun (*ptr).inch dan foydalanilganda *ptr ni qavs ichiga olamiz.

Ok (->) operatori

Strukturali oʻzgaruvchining aʼzo oʻzgaruvchilari va aʼzo funksiyalariga koʻrsatgich orqali kirish uchun arrow (->) operatoridan foydalanishimiz mumkin.

Arrow (->) operatori yordamida a'zo o'zgaruvchiga kirish

example.cpp
#include <iostream>
using namespace std;

struct Distance {
	int feet;
	float inch;
};

int main() {
	Distance d;

	Distance* ptr = &d;
    
	cout << "Enter feet: ";
	cin >> ptr->feet;
	cout << "Enter inch: ";
	cin >> ptr->inch;
 
	cout << "Displaying information." << endl;
	cout << "Distance = " << ptr->feet << " feet " << ptr->inch << " inches";

	return 0;
}

Chiqish

kod
Enter feet: 4
Enter inch: 3.5
Displaying information.
Distance = 4 feet 3.5 inches

Bu erda d o'zgaruvchining manzili ptr ko'rsatkich o'zgaruvchisida saqlanadi, ya'ni ptr d o'zgaruvchiga ishora qiladi.

example.cpp
Distance* ptr = &d;

Keyin d o'zgaruvchining a'zo o'zgaruvchisiga ko'rsatkich yordamida kirish mumkin.

example.cpp
cin >> ptr->feet;

[!NOTE] (*ptr).inch va ptr->inch ekvivalentdir.

Arrow (->) operatoridan foydalanib a'zo funksiyasiga kirish

example.cpp
#include <iostream>
using namespace std;

struct Distance {
    int feet;
    float inch;
    
    void print_distance() {
    	cout << "Displaying Information." << endl;
    	cout << "Distance = " << feet << " feet " << inch << " inches";
    }
};

int main() {
    Distance d;

    Distance* ptr = &d;
    
    cout << "Enter feet: ";
    cin >> ptr->feet;
    cout << "Enter inch: ";
    cin >> ptr->inch;
    
    ptr->print_distance();

    return 0;
}

Chiqish:

kod
Enter feet: 4
Enter inch: 3.5
Displaying Information.
Distance = 4 feet 3.5 inches

Bu erda d o'zgaruvchining a'zo funksiyasiga ko'rsatkich yordamida murojaat qilinadi.

example.cpp
ptr->print_distance();