C programlama dilinde struct - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Diğer diller
  • 2 Açıklama
  • 3 Başlatma
  • 4 Atama
  • 5 Struct işaretçileri
  • 6 Kaynakça

C programlama dilinde struct

  • Čeština
  • Deutsch
  • English
  • فارسی
  • Français
  • 日本語
  • 한국어
  • Norsk bokmål
  • Polski
  • Русский
  • Simple English
  • Українська
  • 中文
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
Bu madde, öksüz maddedir; zira herhangi bir maddeden bu maddeye verilmiş bir bağlantı yoktur. Lütfen ilgili maddelerden bu sayfaya bağlantı vermeye çalışın. (Eylül 2022)

C programlama dilinde, struct (yapı), bir bellek bloğunda tek bir ad altında fiziksel olarak gruplandırılmış değişkenler listesini tanımlayan ve farklı değişkenlere tek bir işaretçi (pointer) aracılığıyla erişilmesine izin veren bileşik bir veri türüdür. Struct veri tipi, başka veri türlerini içerebilir. Bu nedenle dosya uzunluğu, ad, uzantı... veya diğer karma türdeki kayıtlar gibi karma veri türü kayıtları için kullanılır.

Struct, genellikle sözcük uzunluğu sınırlarıyla sınıflandırılmış -boyutlandırılmış- bitişik bir fiziksel bellek bloğuna başvurur. Intel işlemciler için bazı derleyicilerde bulunan benzer şekilde adlandırılmış özelliğe karşılık gelir. Bitişik bellek bloğu olarak, bir yapı içindeki her alan, başlangıçtan itibaren belirli ve sabit bir offsette bulunur.

Bir yapının içeriği bitişik bellekte depolandığından, belirli bir yapı türünü depolamak için gereken bayt sayısını elde etmek için sizeof operatörü, tıpkı ilkeller için kullanılabileceği gibi kullanılmalıdır. Modern derleyiciler tipik olarak hizalama için kullanılan bayt cinsinden boyutu değiştiren #pragma paketi yönergesini destekler.[1]

C++ dilinde bir struct, C++ sınıfıyla aynıdır. Farklı bir varsayılan görünürlüğe sahiptir. Sınıf üyeleri, varsayılan olarak özeldir. Fakat struct üyeleri varsayılan olarak geneldir.

Diğer diller

[değiştir | kaynağı değiştir]

C'deki struct veri tipi, ALGOL 68 struct veri türünden türetilmiştir.[2] C#'taki struct veri türü, C'deki karşılığı gibi bir sınıfa benzer. Bu dillerde bir struct ile bir sınıf arasındaki en büyük fark, bir struct bir işleve argüman olarak iletildiğinde, o işlevdeki struct herhangi bir değişikliğin orijinal değişkene yansıtılmayacağıdır.[3]

Bu, sınıfların veya struct'ların statik olarak veya C#'a benzer bir yığında açık bir işaretçiyle (pointer) dinamik olarak tahsis edilebildiği C++'dan farklıdır. C++'da bir struct ile bir sınıf arasındaki tek fark, bir struct üyelerinin ve temel sınıfların varsayılan olarak genel olmasıdır.

Açıklama

[değiştir | kaynağı değiştir]

C'deki bir struct:

struct tag_name {
   type member1;
   type member2;
  
};

şeklinde tanımlanır. typedef ile struct yazılmak istenirse:

typedef struct tag_name {
   type member1;
   type member2;
} struct_alias;

şeklinde tanımlanabilir.

Başlatma

[değiştir | kaynağı değiştir]

Bir struct'ı başlatmanın üç yolu vardır. Struct türü için:

struct point {
   int    x;
   int    y;
};

Bitişik üyeler verildiğinde C89 tipi başlatıcılar kullanılır.[4]

struct point p = { 1, 2 };

Bitişik olmayan üyeler için belirlenmiş başlatıcı stili kullanılabilir.[5]

struct point p = { .y = 2, .x = 1 };

Bir başlatıcı verilirse veya nesne statik olarak verilirse, atlanan öğeler 0'dan başlatılır.[6] Struct başlatmanın üçüncü yolu ise aynı türden var olan bir nesnenin değerini kopyalamaktır.

struct point q = p;

Atama

[değiştir | kaynağı değiştir]

Bir struct başka bir struct'a atanabilir. Bir derleyici, böyle bir atamayı gerçekleştirmek için memcpy() fonksiyonunu kullanır.

struct point {
    int x;
    int y;
};

int main(void)
{
    struct point p = { 1, 3 };       
    struct point q;
    q = p;              
    return 0;
}

Struct işaretçileri

[değiştir | kaynağı değiştir]

İşaretçiler, bir struct'a adresiyle ulaşmak için kullanılabilir. Bu, struct'ları bir işleve geçirmek için işlevseldir. İşaretçinin referansı * operatörü kaldırılabilir. -> operatörü, işaretçiyi struct referansını kaldırır. Ardından yapının bir üyesinin değerine erişir.

struct point {
   int x;
   int y;
};
struct point my_point = { 3, 7 };
struct point *p= &my_point;
(*p).x=8;
p->x = 8;

Kaynakça

[değiştir | kaynağı değiştir]
  1. ^ "Struct memory layout in C". Stack Overflow. 9 Ekim 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Haziran 2021. 
  2. ^ Ritchie, Dennis M. (1 Mart 1993). "The development of the C language". ACM SIGPLAN Notices. 28 (3): 201-208. doi:10.1145/155360.155580. ISSN 0362-1340. 
  3. ^ "Parameter passing in C#". 24 Aralık 2002 tarihinde kaynağından arşivlendi. 
  4. ^ Kelley, Al (1998). A book on C : programming in C. 4th ed. Ira Pohl. Reading, Mass.: Addison-Wesley. ISBN 0-201-18399-4. OCLC 37783098. 3 Mart 2009 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Haziran 2021. 
  5. ^ "Initialization of structures and unions". www.ibm.com (İngilizce). 4 Haziran 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Haziran 2021. 
  6. ^ "The New C Standard: 6.7.8". c0x.coding-guidelines.com. 18 Şubat 2006 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Haziran 2021. 
"https://tr.wikipedia.org/w/index.php?title=C_programlama_dilinde_struct&oldid=32772855" sayfasından alınmıştır
Kategori:
  • C programlama dili
Gizli kategori:
  • Öksüz maddeler Eylül 2022
  • Sayfa en son 20.08, 13 Mayıs 2024 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
C programlama dilinde struct
Konu ekle