C++ tuzilmalari (struct)
Struktura - bu bitta nom ostidagi turli data types va a'zo funksiyalarning variables to'plami.
U class ga o'xshaydi, chunki ikkalasi ham har xil turdagi ma'lumotlar to'plamiga ega.
Aytaylik, siz biror kishi haqida ba'zi ma'lumotlarni saqlamoqchisiz: uning ismi, familiyasi, yoshi va maoshi.
Ushbu ma'lumotlarni alohida saqlash uchun turli xil o'zgaruvchilarni osongina yaratishingiz mumkin - ism, familiya, yosh, ish haqi.
Biroq, kelajakda siz bir nechta odamlar haqidagi ma'lumotlarni saqlashni xohlashingiz mumkin.
Endi siz har bir kishi uchun har bir ma'lumot uchun turli xil o'zgaruvchilar yaratishingiz kerak bo'ladi: ism_ism1, familiya_1, yosh1, maosh1, ism_ism2, familiya_2, yosh2, maosh2, ...
Kod qanchalik katta va tartibsiz ko'rinishini tasavvur qilishingiz mumkin. Bundan tashqari, o'zgaruvchilar (ma'lumot) o'rtasida hech qanday aloqa yo'qligi sababli, uni boshqarish juda qiyin vazifa bo'ladi.
Yaxshiroq yondashuv - bu shaxs kabi bir nom ostida barcha tegishli ma'lumotlar to'plamiga ega bo'lish va undan har bir shaxs uchun foydalanish.
Endi kod yanada toza, o'qilishi mumkin va samaraliroq ko'rinadi.
Shaxs nomi ostida barcha tegishli ma'lumotlar to'plami tuzilma hisoblanadi.
struct keyword tuzilma turini, undan keyin identifier (tuzilma nomi)ni belgilaydi.
Keyin, figurali qavslar ichida siz ushbu strukturaning bir yoki bir nechta a'zolarini (figurali qavslar ichidagi o'zgaruvchilarni e'lon qilish) e'lon qilishingiz mumkin. Masalan:
struct Person
{
string first_name;
string last_name;
int age;
float salary;
};
Bu erda to'rt a'zodan iborat Shaxs strukturasi aniqlanadi: ism_familiya, yosh va maosh.
Struktura aniqlanganda xotira ajratilmaydi.
Tuzilish ta'rifi faqat o'zgaruvchilarni yaratish rejasidir. Siz uni ma'lumotlar turi sifatida tasavvur qilishingiz mumkin.
Quyidagi kabi butun sonni aniqlaganingizda:
int foo;
int foo o'zgaruvchisi faqat butun sonli elementlarni saqlashi mumkinligini bildiradi. Xuddi shunday, strukturaning ta'rifi faqat struktura o'zgaruvchisi aniqlanganda qanday xususiyatga ega ekanligini ko'rsatadi.
[!NOTE] Deklaratsiyani nuqta-vergul (;) bilan tugatishni unutmang.
Shaxs strukturasini yuqoridagidek e'lon qilgandan so'ng, struktura o'zgaruvchisini quyidagicha belgilashingiz mumkin:
Person bill;
Bu erda strukturaviy o'zgaruvchan veksel aniqlanadi, u Shaxs tipidagi tuzilmaga ega.
Tuzilish o'zgaruvchisi e'lon qilingandagina kompilyator tomonidan kerakli xotira ajratiladi.
Tuzilish o'zgaruvchisi a'zolariga nuqta (.) operator yordamida kirish mumkin.
Faraz qilaylik, siz tuzilma o'zgaruvchisi hisobining yoshiga kirishni va unga 50 ni belgilashni xohlaysiz. Ushbu vazifani quyidagi kod yordamida bajarishingiz mumkin:
bill.age = 50;
// Struktura o'zgaruvchisi a'zolariga ma'lumotlarni tayinlash dasturi
#include <iostream>
using namespace std;
struct Person
{
string first_name;
string last_name;
int age;
float salary;
};
int main()
{
Person p1;
cout << "Enter first name: ";
cin >> p1.first_name;
cout << "Enter last name: ";
cin >> p1.last_name;
cout << "Enter age: ";
cin >> p1.age;
cout << "Enter salary: ";
cin >> p1.salary;
cout << "\nDisplaying Information." << endl;
cout << "First Name: " << p1.first_name << endl;
cout << "Last Name: " << p1.last_name << endl;
cout << "Age: " << p1.age << endl;
cout << "Salary: " << p1.salary;
return 0;
}
Chiqish
Enter first name: Jane
Enter last name: Smith
Enter age: 27
Enter salary: 10000
Displaying Information.
First Name: Jane
Last Name: Smith
Age: 27
Salary: 10000
Bu erda to'rt a'zodan iborat Shaxs tuzilmasi e'lon qilinadi: ismi_ismi, familiyasi, yoshi va maoshi.
main() function ichida p1 struktura o'zgaruvchisi aniqlanadi. Keyin foydalanuvchidan ma'lumot kiritish so'raladi va foydalanuvchi tomonidan kiritilgan ma'lumotlar ko'rsatiladi.
C++ da tuzilmalar a'zo funksiyalarga ham ega bo'lishi mumkin.
Ushbu a'zo funksiyalari muntazam funksiyalarga o'xshaydi, lekin struktura doirasida aniqlanadi. Ular strukturaning ma'lumotlar a'zolariga bevosita kirishlari va ularni boshqarishlari mumkin.
Biz strukturani ta'rifi doirasida funksiyani belgilash orqali a'zo funksiyani e'lon qilishimiz mumkin.
struct Person {
string first_name;
string last_name;
int age;
float salary;
// shaxs haqidagi ma'lumotlarni ko'rsatish uchun a'zo funksiyasi
void displayInfo() {
cout << "First Name: " << first_name << endl;
cout << "Last Name: " << last_name << endl;
cout << "Age: " << age << endl;
cout << "Salary: " << salary << endl;
}
};
Ushbu misolda Person tuzilmasi shaxs haqidagi ma'lumotlarni aks ettiruvchi displayInfo() a'zo funksiyasini o'z ichiga oladi.
Keling, bir misolni ko'rib chiqaylik.
#include <iostream>
using namespace std;
struct Person {
string first_name;
string last_name;
int age;
float salary;
// shaxs haqidagi ma'lumotlarni ko'rsatish uchun a'zo funksiyasi
void display_info() {
cout << "First Name: " << first_name << endl;
cout << "Last Name: " << last_name << endl;
cout << "Age: " << age << endl;
cout << "Salary: " << salary << endl;
}
};
int main() {
Person p1;
cout << "Enter first name: ";
cin >> p1.first_name;
cout << "Enter last name: ";
cin >> p1.last_name;
cout << "Enter age: ";
cin >> p1.age;
cout << "Enter salary: ";
cin >> p1.salary;
// a'zo funksiyasi yordamida ma'lumotlarni ko'rsatish
cout << "\nDisplaying Information." << endl;
p1.display_info();
return 0;
}
Chiqish
Enter first name: Jane
Enter last name: Smith
Enter age: 27
Enter salary: 10000
Displaying Information.
First Name: Jane
Last Name: Smith
Age: 27
Salary: 10000
Shuningdek oʻqing