C++ Örnekli Yapı

⚡ Akıllı Özet

Yapı içinde C++ Kullanıcı tanımlı bir veri türü olup, farklı veri türlerindeki öğeleri tek bir ad altında gruplandırarak, bir değişkenin kişi adı, vatandaşlık ve yaş gibi ilgili değerleri bir arada tutmasına olanak tanır.

  • ???? Farklı veri türleri: Bir yapı (struct), farklı türdeki değişkenleri kullanıcı tanımlı bir ad altında gruplandırır.
  • 🔑 struct anahtar kelimesi: `struct` anahtar kelimesini kullanarak bir yapı tanımlayın, ardından üyeleri süslü parantezler içinde listeleyin.
  • 🧱 Örnekler oluşturma: Person p ifadesini yazmak, bir yapı değişkeni oluşturur ve ona bellek ayırır.
  • 🎯 Nokta operatörü: Örnek üzerinden herhangi bir üyeyi okuyabilir veya ayarlayabilirsiniz, örneğin p.age = 27.
  • ➡️ İşaretçiler ve fonksiyonlar: Bir struct, işaretçilerle çalışır ve bir fonksiyona sıradan bir argüman gibi geçirilir.
  • 🤖 Yapay zeka yardımı: GitHub Copilot ve diğer yapay zeka asistanları, bir yorumdan yapı tanımları ve üye erişimi oluşturur.

C++ yapı

Yapı Nedir? C++?

Bir yapı, bir C++ Farklı veri türlerindeki öğeleri bir arada depolamak için kullanılabilen veri yapısı. İçinde C++Bir yapı, kullanıcı tanımlı bir veri türüdür. Yapı, grup için bir veri türü oluşturur.ping Farklı veri türlerindeki öğeleri tek bir veri türü altında birleştirme.

Örneğin:

Birisi, adı, vatandaşlığı ve yaşı hakkında bilgi saklamanız gerektiğini varsayalım. Verileri ayrı ayrı depolamak için ad, vatandaşlık ve yaş gibi değişkenler oluşturabilirsiniz.

Ancak, gelecekte birçok kişi hakkında bilgi saklamanız gerekebilir. Bu, farklı bireyler için değişkenler oluşturulacağı anlamına gelir. Örneğin, isim1, vatandaşlık1, yaş1 vb. Bunu önlemek için bir yapı (struct) oluşturmak daha iyidir.

Bir Yapı ne zaman kullanılır?

İşte yapıyı kullanmanın bazı nedenleri C++.

  • Farklı veri türlerindeki öğeleri tek bir veri türü altında depolamanız gerektiğinde bir yapı kullanın.
  • C++ yapılar referans türü olmaktan ziyade bir değer türüdür. Verilerinizi oluşturduktan sonra değiştirmeyi düşünmüyorsanız bir yapı kullanın.

C++ Yapı Başlatma

Bir oluşturmak için C++ Yapıyı oluşturmak için struct anahtar kelimesini ve ardından bir tanımlayıcıyı kullanırız. Tanımlayıcı yapının adı olur. İşte bir oluşturma sözdizimi C++ yapı:

Sözdizimi:

struct struct_name  
{  
     // struct members
}   

Yukarıdaki sözdiziminde struct anahtar sözcüğünü kullandık. struct_name yapının adıdır.

Yapı üyeleri küme parantezleri içine eklenir. Bu üyeler muhtemelen farklı veri türlerine aittir.

Örneğin:

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

Yukarıdaki örnekte Person üç üyeli bir yapıdır. Üyelerin adı, vatandaşlığı ve yaşı bulunur. Bir üye char veri tipindedir, geri kalan 2 üye ise tam sayıdır, yapı oluşturulduğunda hafıza tahsis edilmez. Bellek ancak yapıya bir değişken eklendikten sonra tahsis edilir.

Yapı Örnekleri Oluşturma

Yukarıdaki örnekte Person adında bir yapı oluşturduk. Aşağıdaki gibi bir yapı değişkeni oluşturabiliriz:

Person p;

p, Person türünde bir yapı değişkenidir. Bu değişkeni yapının üyelerine erişmek için kullanabiliriz.

Yapı Üyelerine Erişim

Yapı üyelerine erişmek için yapının örneğini ve nokta (.) operatörünü kullanırız. Örneğin, Person yapısının üye yaşına erişmek için:

p.age = 27;

Yapının örneğini kullanarak, struct Person'ın üye yaşına ulaştık, s. Daha sonra üye yaşı değerini 27 olarak ayarladık.

Örnek 1:

#include <iostream>    
using namespace std;
struct Person
{
	int citizenship;
	int age;
};
int main(void) {
	struct Person p;
	p.citizenship = 1;
	p.age = 27;
	cout << "Person citizenship: " << p.citizenship << endl;
	cout << "Person age: " << p.age << endl;

	return 0;
}

Çıktı:

Yapı Üyelerine Erişim

İşte kodun ekran görüntüsü:

Yapı Üyelerine Erişim

Code Açıklama:

  1. İçinde tanımlanan fonksiyonları kullanmak için iostream başlık dosyasını programımıza dahil edin.
  2. Sınıflarını çağırmadan kullanmak için std ad alanını ekleyin.
  3. Kişi adında bir yapı oluşturun.
  4. Yapı gövdesinin başlangıcı.
  5. Tamsayı türünde vatandaşlık adlı bir yapı üyesi oluşturun.
  6. Tamsayı türünde yaş adında bir yapı üyesi oluşturun.
  7. Yapı gövdesinin sonu.
  8. main() fonksiyonunu çağırın. Program mantığı bu fonksiyonun gövdesine eklenmelidir.
  9. Person yapısının bir örneğini oluşturun ve ona p adını verin.
  10. Yapı üyesi vatandaşlığının değerini 1 olarak ayarlayın.
  11. Yapı üyesi yaşının değerini 27 olarak ayarlayın.
  12. Yapı üyesi vatandaşlığının değerini başka bir metnin yanında konsola yazdırın.
  13. Yapı üyesi yaşının değerini başka bir metnin yanında konsola yazdırın.
  14. Program başarılı bir şekilde çalışırsa bir değer döndürmelidir.
  15. Main() fonksiyonunun sonu.

Yapıya Yönelik İşaretçiler

Bir yapıya işaret eden bir işaretçi oluşturmak mümkündür. Bu, int, float, double, vb. gibi yerel veri türlerine işaret eden işaretçilerin nasıl oluşturulduğuna benzerdir. Bir işaretçinin C++ bir hafıza konumu saklayacak.

Örnek 2:

#include <iostream>
using namespace std;

struct Length
{
	int meters;
	float centimeters;
};

int main()
{
	Length *ptr, l;

	ptr = &l;

	cout << "Enter meters: ";
	cin >> (*ptr).meters;
	cout << "Enter centimeters: ";
	cin >> (*ptr).centimeters;
	cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";

	return 0;
}

Çıktı:

Yapıya Yönelik İşaretçiler

İşte kodun ekran görüntüsü:

Yapıya Yönelik İşaretçiler

Code Açıklama:

  1. Fonksiyonlarını kullanabilmek için iostream başlık dosyasını programımıza ekleyiniz.
  2. Sınıflarını çağırmadan kullanmak için programımıza std ad alanını ekleyin.
  3. Uzunluk adlı bir yapı oluşturun.
  4. Yapının gövdesinin başlangıcı Uzunluk.
  5. Tamsayı veri türünün metreleri adlı bir yapı üyesi oluşturun.
  6. Tamsayı türünde santimetre adında bir yapı üyesi oluşturun.
  7. Yapının gövdesinin sonu Uzunluk.
  8. Main() işlevini çağırın.
  9. Main() işlevinin gövdesinin başlangıcı.
  10. Uzunluk türünde bir işaretçi değişkeni *ptr ve normal değişken l oluşturun.
  11. l değişkeninin adresini dosyamızda saklayın. işaretçi değişkeni.
  12. Konsolda kullanıcıdan değişken ölçüm değerlerinin değerini girmesini isteyen bir mesaj görüntüleyin.
  13. Kullanıcının klavye aracılığıyla girdiği değeri okuyun. Üye fonksiyon ölçerlere burada işaretçi değişkeni kullanılarak erişilir.
  14. Konsolda kullanıcıdan santimetre değişkeni için değer girmesini isteyen bir mesaj görüntüleyin.
  15. Kullanıcının klavye aracılığıyla girdiği değeri okuyun. Üye işlevi santimetreye burada işaretçi değişkeni kullanılarak erişilir.
  16. Kullanıcıdan okunan değerleri başka bir metnin yanında konsolda görüntüleyin.
  17. Program başarılı bir şekilde yürütüldüğünde bir değer döndürmelidir.
  18. Main() işlevinin gövdesinin sonu.

İşlev Argümanı Olarak Yapı

Bir yapıyı bir fonksiyona argüman olarak iletebilirsiniz. Bu, normal bir tartışmayı iletmekle aynı şekilde yapılır. Yapı değişkenleri aynı zamanda bir fonksiyona da aktarılabilir. Bunun iyi bir örneği, yapı üyelerinin değerlerini görüntülemeniz gerektiği durumdur. Bunu gösterelim:

Örnek 3:

#include<iostream>
using namespace std;

struct Person
{
	int citizenship;
	int age;
};

void func(struct Person p);

int main()
{
	struct Person p;

	p.citizenship = 1;
	p.age = 27;

	func(p);
	return 0;
}
void func(struct Person p)
{
	cout << " Person citizenship: " << p.citizenship<<endl;
	cout << " Person age: " << p.age;
}

Çıktı:

İşlev Argümanı Olarak Yapı

İşte kodun ekran görüntüsü:

İşlev Argümanı Olarak Yapı

Code Açıklama:

  1. iostream başlık dosyasını dosyamıza ekleyin. Daha sonra fonksiyonlarını hata almadan kullanacağız.
  2. Sınıflarını kullanmak için programımıza std ad alanını ekleyin. Sınıflarını kullanmak için ad alanını çağırmamıza gerek kalmayacak.
  3. Kişi adında bir yapı oluşturun.
  4. Person yapısının gövdesinin başlangıcı.
  5. Person yapısının bir üyesini oluşturun. Üye vatandaşlık olarak adlandırılır ve tam sayı türündedir.
  6. Person yapısının bir üyesini oluşturun. Üye, age olarak adlandırılır ve tamsayı türündedir.
  7. Kişi yapısının gövdesinin sonu.
  8. Bağımsız değişken olarak struct Person (p) örneğini alan bir işlev oluşturun.
  9. Ana işlevi çağırın. {, main() işlevinin gövdesinin başlangıcını işaret eder.
  10. struct Person'ın bir örneğini oluşturun ve ona p adını verin.
  11. Yapının örneğini (p) kullanarak ve ona 1 değerini atayarak yapı üyesi vatandaşlık değişkenine erişin.
  12. Yapının örneğini kullanarak, yaş yapı üyesi değişkenine erişin ve ona 27 değerini atayın.
  13. Fonksiyonu çağırın ve argüman olarak Person, p yapısının örneğini ona iletin.
  14. İşlev başarılı bir şekilde yürütüldüğünde bir değer döndürmelidir.
  15. Main() işlevinin gövdesinin sonu.
  16. Fonksiyonun gövdesini oluşturun.
  17. Fonksiyonun gövdesinin başlangıcı.
  18. Yapı üyesi vatandaşlık değerine erişin ve bunu diğer metinlerle birlikte konsola yazdırın.
  19. Yapı üyesi yaş değerine erişin ve bunu diğer metinlerin yanında konsolda yazdırın.
  20. İşlev gövdesinin sonu.

Bir sınırlama C++ yapı

Yapıların sınırlamaları şunlardır:

  • Yapı veri türü yerleşik veri türleri gibi ele alınamaz.
  • Opera+ - gibi torlar ve diğerleri kullanılamaz yapı değişkenleri.
  • Yapılar veri gizlemeyi desteklemez. Bir yapının üyelerine kapsamı ne olursa olsun herhangi bir fonksiyon tarafından erişilebilir.
  • Statik üyeler yapı gövdesi içinde bildirilemez.
  • Yapıcılar bir yapının içinde oluşturulamaz.

SSS

In C++ Bir struct ve bir class neredeyse birbirinin aynısıdır. Aralarındaki tek gerçek fark varsayılan erişimdir: struct üyeleri varsayılan olarak public iken, class üyeleri private'tır. Her ikisi de üye fonksiyonlarını, kurucuları ve kalıtımı destekler.

AC yapısı yalnızca veri tutar ve her değişken bildiriminden önce struct yazmanız gerekir. C++ `struct` yapısı ayrıca üye fonksiyonları, kurucuları ve erişim belirleyicilerini de içerebilir ve değişkenleri tanımlarken `struct` anahtar kelimesi isteğe bağlıdır.

Yapıyı tanımlayın, ardından örneğin Person people[3] gibi bir dizi oluşturun. Her eleman tam bir yapıdır ve üyelere people[0].age ile erişebilirsiniz. Yapı dizileri, aynı türden birçok kaydı bir arada saklar.

İç içe yapı, başka bir yapının içinde üye olarak tanımlanan bir yapıdır. Birbiriyle ilişkili alt verileri gruplandırır; örneğin, bir Çalışan yapısının içine yerleştirilmiş bir Tarih yapısı gibi. İç üyelere nokta operatörünü kullanarak erişebilirsiniz.

Boyut kabaca üyelerinin toplamı artı derleyicinin hizalama için eklediği dolgu miktarıdır, bu nedenle sizeof ham toplamı aşabilir. Üye fonksiyonları hiçbir şey eklemez. Üyeleri boyuta göre sıralamak gereksiz dolgu miktarını azaltır.

Bir yapıya işaretçi tuttuğunuzda ok operatörünü kullanın. (*ptr).age yerine, ptr->age kısayolu aynı üyeyi okur. Nokta operatörü bir işaretçi üzerinde değil, doğrudan bir örnek üzerinde çalışır.

Evet. Yapay zekâ kodlama asistanları, kısa bir komut veya yorumu eksiksiz bir metne dönüştürüyor. C++ Üyeleri, kurucuları ve alan erişimini içeren yapı. Yapay zeka proje özel gereksinimlerini gözden kaçırabileceğinden, oluşturulan veri türlerini ve hizalamayı her zaman gözden geçirin.

Evet. GitHub Yardımcı Pilotu Editörünüzde yazarken yapı tanımlarını, üye değişkenlerini ve nokta veya ok erişimini önerir. Tekrarlayan şablon kodlarını iyi bir şekilde ele alır, ancak derlemeden önce türleri, dolguları ve mantığı yine de doğrulamanız gerekir.

Bu yazıyı şu şekilde özetleyin: