Merhaba ve tekrar hoş geldiniz.
Yapılar, özellikle iç içe yapılar, yapıların içindeki iç içe yapılar hakkında daha fazla bilgi.
Bunun anlamı bu.
Gördüğünüz gibi, kendisi bir veya daha fazla üyesi olarak başka yapılar içeren bir yapı tanımlamanıza
izin verir.
Burada oldukça güzel bir konsept var.
Yapıların içinde yapılara sahip olabilirsiniz.
Böylece, yıl içindeki bir ayı bir günü tarih adı verilen bir yapıda mantıksal olarak gruplamanın nasıl mümkün olduğunu gördünüz.
Bugüne kadar bu örneğe sadık kaldık.
Peki ya zamanı, saatleri, dakikaları ve saniyeleri bir yapı içinde gruplamak istersek ne olacak?
Bu da faydalı olabilir gibi görünüyor.
Yani burada zaman denilen bir yapı var ve bugün de buna çok benziyor.
Üç unsur içerir.
Yapının adının time olduğunu biliyoruz çünkü struct anahtar sözcüğünü takip ediyor, bu etiket adı.
Ve sonra küme parantezlerinin içinde, öğelerimizi, veri türlerimizi ve değişkenlerimizin adlarını tanımlarız.
Ve eğer istersek buraya bir dizi de koyabileceğimizi artık biliyoruz.
Ancak bu durumda bir diziye ihtiyacımız yok, sadece üç tam sayıya ihtiyacımız var.
Yapıyı sağ küme parantezi ve noktalı virgül ile sonlandırıyoruz.
Ne hakkında?
Bazı uygulamalarda tarihi ve saati birlikte gruplamak isteyebilirsiniz.
Mantıklı olurdu, değil mi?
Çünkü tarih ve saat mantıksal olarak düzenlenmiştir ya da mantıksal olarak birliktedir, değil mi?
Mantıksal olarak gruplandırılmışlar.
Böylece, zaman içinde belirli bir tarihte gerçekleşecek etkinliklerin bir listesini oluşturabilirsiniz.
Dolayısıyla bu, iç içe geçmiş bir yapı kullanmak isteyeceğiniz çok faydalı bir durum olabilir.
Böylece hem tarihi hem de saati birlikte ilişkilendirmek için uygun bir yolunuz olur.
Örneğin tarih ve saat adında yeni bir yapı tanımlayabiliriz.
Bu, üyeleri olarak, her ikisi de yapı olan tarih ve saat olmak üzere iki öğe içerecektir.
Yani artık iç içe geçmiş bir yapımız var.
İki başka yapı içeren tarih ve saat adlı bir yapımız var.
Sözdiziminde bunun gibi bir şey, diğer yapıları oluşturmaya çok benzer.
Buradaki tek fark, eleman isimleri olarak gerçek yapının içindedir.
struct anahtar sözcüğüne, struct adına ve ardından değişken adına sahip olursunuz.
Bu durumda, bir tarih ve saat yapısı oluşturuyoruz ve biri tarih, diğeri zaman türünde olmak üzere
iki yapımız var.
İki değişken durum ve S zamanı.
Yapının ilk üyesi struck date tipindedir ve SE Date olarak adlandırılır.
Tarih ve saat yapısının ikinci üyesi struck time tipindedir ve se time olarak adlandırılır.
Değişkenler artık struct tarih ve saat türünde tanımlanabilir.
Tarih için ayrı, zaman için ayrı değişkenler oluşturmak zorunda değiliz.
Bir tane oluşturabiliriz ve bu yapı hem tarihi hem de saati depolayacaktır.
Bunu aynen böyle yapardık.
Güçlü bir anahtar sözcük kullanır, yapının türünü, tarih ve saati ve ardından değişken adını belirtiriz.
Bu durumda, olayları depolayacaklar.
Yani iç içe geçmiş bir yapıdaki belleklere erişmek istediğimizde event diyoruz.
Yine, oldukça basit sözdizimi.
Tek yapmanız gereken diğer üyeler gibi referans vermektir.
Bu üye seçim operatörünü kullanmanız gerekir.
Bu yüzden birçok kez kullanabilirsiniz.
Yani event adında bir yapımız varsa ve tarihi almak istiyorsak, events date deriz
çünkü bu tarih ve saat yapısının bir üyesidir.
Şimdi, bir durum içindeki belirli bir üyeye tekrar başvurmak isterseniz, dönem dosyasını
sonuna eklenecek numara adıyla kullanırsınız.
Dolayısıyla, aşağıdaki deyim event içinde yer alan tarih yapısının ayını Ekim olarak ayarlayacak ve
zaman yapısı içinde yer alan saniyelere bir ekleyecektir.
Bu yüzden olay durumu diyoruz ve ardından bir nokta daha koyuyoruz çünkü durum değişkeninin öğesine erişmek istiyoruz.
Aylara erişmek istiyoruz ve onuncu ayı atayacağız.
Yani orada birden fazla nokta var.
Ve tüm bunların söylediği şey, olay adında bir yapınız olduğudur.
Ve daha önceki beyanımız nedeniyle, bunun tür, tarih ve saat olduğunu söylemiştik.
İçinde bir struct var, bu sadece bir tarih struct'ıdır ve bu tarih struct'ının month üyesine erişmek
istiyorsunuz.
Yani Dot's'a dot month diyorsun.
Ve sonra saniye artışını bir artırmak istiyorsak, sadece artı diyebiliriz,
artı bu ön uygulama operatörünü artı artı olayını zaman noktası saniyeleri olarak kullanabiliriz.
Bu iki noktayı dahil etmeliyiz ve saniye bir tamsayıdır, bu yüzden ona sadece bir ekleyecektir.
Çok açık.
Olay değişkeni tıpkı normal yapılar gibi başlatılabilir.
Değişken olaydaki tarihi dört Şubat 2015 ve saati 330 olarak ayarlamak isterseniz, tarih ve saat
olayını başlat dersiniz.
Normal şekilde oluşturabilirsiniz.
Ve sonra farklı yapıların başlatma üyelerini belirtmek için bu küme parantezlerine sahip olursunuz.
İlk küme parantezinde tarihi başlatacağız, ayı iki Şubat,
veriyi bir ve yılı 2015 olarak başlatacağız.
Sonra küme parantezlerini sonlandırıyoruz ve bu küme parantezlerinden sonra bir virgül koyuyoruz.
İkincisi ise, çok boyutlu bir dizi başlatmaya benziyor.
Zamanın sıfır ile 330'a eşit olacağını söylüyoruz.
Yani 3 saat, 30 dakika, 0 saniye.
Üye adlarını ve başlatmayı diğer tüm başlatma kurallarımızda olduğu gibi kullanabilirsiniz.
Bu faydalı olacaktır çünkü sırayı belirtmeniz gerekmeyecektir.
Ve burada sadece olayı yaratıyoruz.
Ve sonra küme parantezlerinin içinde nokta kullanırız.
Operatör.
Ay eşittir iki gün eşittir bir yıl eşittir 2015 diyoruz.
Ve bu yalnızca tarih başlatmayı belirtecektir.
Zaman başlatmayı belirtmek istersek, yine her üye adı için nokta nokta dakika noktalarını
kullanırız ve sırayı değiştirebiliriz.
Değil mi?
Nokta saniye, SQL 0/1 ve sonra dakika eşittir 30 ve sonra üç B son diyebiliriz.
Sıra önemli değildir.
Ve sonra noktalı virgül ve kıvırcık ile bitiriyoruz.
Doğru, kıvırcık ayraç.
Artık iç içe yapılara sahip olabileceğimizi bildiğimize göre, iç içe yapılardan oluşan bir diziye ne dersiniz?
Şimdi gerçekten işin içine giriyoruz.
Evet, bu mümkün.
Tarih, saat tarih ve saat yapılarından oluşan bir dizi kurabilirsiniz ve tarih ve saat içinde iki
yapı içerir.
Bunu normal bir sözdizimi gibi yaparsınız.
Dizinin boyutunu belirtmek için bu parantezleri kullanmanız gerekir.
Gerçek yapı adını bildirdiğinizde, tıpkı diğer yapılar gibi tarih saat türünü belirtmeniz
gerekir.
events dizisi, tür, yapı, tarih ve saatten oluşan 100 öğe içerecek şekilde bildirilir.
Dizide yer alan dördüncü tarih ve saate, bu köşeli parantezlerin içinde olağan alt üç dizini veya
dizin üç veya alt simge üç kullanılarak başvurulur.
Yani dizideki ilk saati öğlen olarak ayarlamak için event subzero dot SW time diyeceksiniz çünkü SW
time'ın time struct'a işaret ettiğini ve sonra time struct'taki öğeye erişmeniz gerektiğini unutmayın.
Yani başka bir nokta kullanır ve 12 dersiniz.
Önceki bildirime ya da atamaya çok benzediğini söylemeliyim, ancak bunun yerine
köşeli parantezlerin içinde dizi indeksi sıfırdır.
Eğer olaylar bir dizi olmasaydı ve sadece tek bir yapıya ya da saat yapısına erişmek isteseydiniz,
parantezlerden kurtulurdunuz.
Yani diziler hiçbir şeyi gerçekten karmaşık hale getirmez.
Sadece köşeli parantezlere ve dizinlere gerçekten aşina olmanız gerekir.
İşte.
Dakikaları sıfırın altındaki sıfır olayına ayarlıyoruz.
Böylece ilk öğeyi ayarlıyoruz ve ardından saniyeleri sıfıra ayarlıyoruz.
Şimdi bir yapı içinde bir yapı bildirmek istersek.
Tarih yapısını zaman yapısı tanımı içinde tanımlayabilirsiniz.
Dolayısıyla bu da başka bir esneklik kategorisidir.
Başka bir yerde tanımlanmış tarih ve saat yapısına sahip olmamız gerekmiyor.
Bu yapıları doğrudan tarih ve saat yapımızda tanımlayabiliriz.
Dolayısıyla burada, tarih yapısını zaman yapısının içinde tanımlamanın bir örneği verilebilir.
Yani burada iç içe geçmiş bir yapımız var, ancak bunu aslında time struct tanımının içinde tanımladık.
Bu yüzden etiket adıyla birlikte struct time diyoruz ve sonra küme parantezlerinin içinde struct date diyoruz.
Bu tamamen geçerli.
Ayrıca başlangıç tarihinin sonunda noktalı virgülden önce DOB adında bir değişken oluşturduğumuzu
fark edeceksiniz.
Ve sonra başlangıç tarihini ve öğelerini bir DOB değişkeninde oluşturduktan sonra, zaman başlangıcının öğelerini
saat, dakika ve saniye olarak belirleriz.
Yani bu tamamen geçerli.
Şimdi, muhtemelen bu vurulan tarihin sınırlamasına dikkat etmelisiniz, burada yalnızca bir kez DOB
adlı bir değişkenle tanımlanacaktır.
Tarih yapısını bunun dışında hiçbir yerde kullanamazsınız.
Bir iç zaman kullanmadığınız sürece tarihi tek başına kullanamazsınız.
Böylece tarih yapısının bildirimi zaman yapısının kapsamı içine alınır.
Tanım kapsamı, tarih yapısı zaman kapsamında olduğu için şeylere nasıl erişebileceğinizi ifade eder.
Bir zaman değişkeni time struct değişkeni oluşturmadığınız sürece buna erişemezsiniz.
Sadece struct date my variable name diyemezsiniz çünkü buna erişiminiz yoktur.
Yani tarih, zaman yapısının dışında mevcut değildir.
Zaman yapısının dışında bir tarih değişkeni bildirmek imkansızdır.
Bir tarih yapısı değişkenini kullanabileceğiniz tek zaman, zaman yapısını oluşturduğunuz zamandır ve sizin için otomatik
olarak bir DLB değişkeni oluşturacaktır.
Dolayısıyla bu biraz sınırlıdır, ancak bunu yalnızca tarihin asla tek başına olmaması gereken saatle ilişkilendirildiğinde
tarihe ihtiyaç duyduğunuz bir durumda kullanırsınız.
O zaman bu şekilde yaparsınız.
Yani başka bir diz konsepti, çok çok temel bir yapının içinde bir yapı sağlama konsepti.
Ve söz dizimi oldukça basittir.
Diziyi bir yapı içeren bir yapıya ekleyerek bunlara kolayca alışacaksınız.
Dizindeki köşeli parantezleri kullanmanız yeterlidir.
Orada gerçekten değişen bir şey yok.
Ve sonra formatı biraz değiştirebilirsiniz.
Yalnızca yerel bir iç içe yapı istiyorsanız, bunu doğrudan diğer yapı tanımının içinde tanımlayabilirsiniz.
Yani burada yapı tipimiz konusunda gerçekten uzmanlaşıyoruz.
Son birkaç kavramdan bahsetmek istiyorum, özellikle de yararlı olan bir yapının içinde nasıl işaretçiler oluşturabileceğinizi
göstermek istiyorum.
Daha sonra bazı zorluklar ve alıştırmalar yapacağız ve bu yapı kavramına gerçekten aşina
olacaksınız.
Teşekkür ederim.