Merhaba ve hoş geldiniz.
Bu konuşmada, şu konulardan bahsetmek istiyorum bir diziyi başlatma hakkında.
Bir diziyi nasıl kullanacağımızı biliyoruz, bir dizinin nasıl oluşturulacağını biliyoruz.
Ama özellikle, ya şunları istiyorsanız Diziye belirli başlangıç değerleri atamak için
bunu nasıl yaparsınız?
Bu nedenle, ilk atamayı yapmak isteyeceksiniz çoğu zaman dizinizin elemanları
için değerler.
İstemenizin nedeni bir diziye veya hatta değişkenlere
ilk değer atamasının nedeni işler ters gittiğinde bunu tespit etmeyi
kolaylaştırır.
Başlangıç verilerine sahip olmadığınızda ve bir şey yapmaya çalışırsanız, programınızda
sorunlara neden olabilirsiniz.
Bu yüzden başlatma çok iyi bir ve her zaman bunu yapmak istersiniz.
Ve bir dizi kullanarak dizide çok, çok sayıda eleman.
Ve böylece belirli bir yol var bu öğeleri başlatabilirsiniz.
Farklı sözdizimini kullanabilirsiniz.
Ama başlatma iyi bir şeydir ve her zaman bunu yapmak istersiniz.
Hızlıca nasıl olduğunu konuşmak istedim bir dizi yapabilirsiniz çünkü bunu
yapmanın farklı yolları vardır.
Yani tıpkı ilk atamayı yapabildiğiniz gibi değerlerini değişkenlere
atayabilir, bildirildiklerinde Bir dizi tanımlandığında, dizinin
elemanlarına ilk değerleri verir.
Bir dizinin değerlerini başlatmak için değerleri bir liste halinde sağlamanız yeterlidir.
Liste virgül ile ayrılmıştır ve tüm liste bir çift küme
parantezi içine alınır.
Şuna benzer bir şey.
Burada bir sayaçlar adlı dizi.
İnt türündedir ve 5 elemanı vardır.
Ve sonra ne yapıyoruz küme parantezleri var ve burada
herhangi bir dizin kullanmıyoruz.
Fark edeceksiniz ki sadece virgülle ayrılmış sayılar.
Bu ne yapıyor? sayaçlar dizisindeki 5 elemanın tümü 0'dır,
elemanların her biri 0'dır.
Başka bir dizimiz varsa ve adını bu dizi tamsayılardan oluşuyor ve boyutu
da 5 ve sonra bizim atama operatöründen sonra küme parantezleri
0 virgül 1 virgül 2 virgül 3 virgül 4, bu ne işe yarıyor?
İlk tamsayıyı atıyor elemanlı tamsayılar dizisini
0'a, ikinci elemanı 1'e, üçüncü elemanı 2'ye, dördüncü elemanı 3'e ve beşinci
elemanı 4'e ayarlar.
Bu güzel bir sözdizimidir. dizisini bildirdiğinizde diziyi hemen
başlatmak için parantez içinde virgülle ayrılmış sayılar ve bunu
yapmak istiyorsunuz.
Aynı zamanda tamamen tüm diziyi başlatın.
Yani bu 2 önceki örneklerinde, 5 boyutlu bir dizinin
tüm 5 elemanını ilklendirdik.
Peki ya sadece Bazı değerleri ilklendirmek mi?
Başlangıç
değerlerini sağlarsanız dizinin boyutu kadar sayıya eşit değilse, o zaman kalan değerler 0 olarak ayarlanır.
Yani şöyle bir şey yaparsanız tipinde örnek veri adında
bir diziye sahip olduğunuzda akışında 500 öğe içerir.
Ancak küme parantezleri içinde, tüm Burada 3 unsurumuzu görüyorsunuz.
Bunun yapacağı şey örneğin ilk 3 değerini
başlatacak veri dizisini 100 300 500'e ayarlayın. 5.
Ve sonra kalan 5 497 öğeleri 0 olacaktır.
Bu yüzden her şeyi belirtin.
Bir de şu kavram var belirlenmiş bir başlatıcının.
Bu sanırım C99'da tanıtıldı.
Bu güzel küçük özellik sayesinde başlatmak istediğiniz öğeleri seçebilir ve
belirleyebilirsiniz.
Sanırım C99'da bunu eklediler ve sonra C11'de bunu isteğe bağlı hale getirdiler.
Yani hangi derleyiciye bağlı olarak sahipseniz, bunu yapabilir
ya da yapamayabilirsiniz.
Ama bundan bahsetmek istiyorum çünkü biraz yaygındır.
Bazı derleyiciler C99'dan sonra bunu yapmanız için.
Ama bu harika çünkü aslında sadece seç ve seç.
Böylece bir öğeyi içine alabilirsiniz sayısını bir çift parantez içinde belirtin ve ardından dizi
elemanlarını belirtin başlatılabilir ve bunu herhangi bir
sırada yapabilirsiniz.
İşte bir örnek.
Yine örnek veri dizimiz var.
Float türündedir.
Büyüklüğü 500 olacak.
Ama burada bizim kıvırcık parantezler, ek indekslerimiz var.
2'de parantezlerimiz var, diyor ki Parantez 2 alt 2 eşittir 500. 5, alt-1 eşittir
300. 0 ve alt-0 100'e eşittir. 0.
Virgülle ayrılmışlar.
Tüm bu yapılanlar önceki örnekte sahip olduğumuz şeyin aynısı,
ancak bu farklı bir sırayla yapmak.
Ama sen yine de 0 veya 100'e eşit ilk elemana sahip, ikinci öğesi
300'e ve üçüncü albüm 500'e eşittir.
5.
Ancak, biz küme parantezleri içinde hangi dizinin başlatılacağını
belirtir.
Başka bir örnek olarak burada bir int arr adlı dizinin boyutu 6'dır.
Ve bunu ilan ettiğimizde 212'ye giden son eleman
olan beşinci elemanı başlatır, tüm elemanlar 0 olacaktır.
İşte geleneksel bir örnek dizinizin adını bildirdiğiniz
ilklendirme ve birçok farklı numara sağlarsınız.
Bu örnekte, şunu bildiriyoruz bir dizi ve her bir
aydaki tüm günleri depolayacak.
Ve bu yüzden bunu yaptığımızda dizisini kullanırız ve
bunu yazdırırız ki bu çok yaygındır, genellikle Dizideki öğeleri yazdırmak veya en azından
üzerinde yinelemek için döngüler.
Burada yaptığımız şey Sadece her ayın çıktısını ve kaç
gün olduğunu alacağım.
Öyleyse bunu kod olarak inceleyelim bloklarının çıktısını göstermek için.
İşte örneğimiz.
Günlerimiz ve aylarımız var ve diziyi başlatıyoruz.
Olması gereken ilk unsur 31, sonraki 28, sonraki 31.
Ayrıca 10. satırda fark etmişsinizdir. bir sabit oluşturmak için bir tanımlama kullanarak.
Ve bu arada c'de şunları da yapabilirsiniz sabit bir anahtar kelime kullanın, bunun hakkında ve diğer
şeyler hakkında konuşacağız, bu sabitler oluşturmanın başka bir yolu.
Ama şu anda sadece konuşuyoruz. diziler ve onları başlatma
hakkında, yapması çok kolay, ayrılmış küme parantezleri içinde virgüllerle.
Peki bu ne gösterecek dizinin içinden
geçecek ve aşağıdakilere bakacak endeks artı 1 ve ardından gün endeksi.
Yani 1. ay diyecek değerlerin ne olduğuna bağlı olarak kaç gün
vardır.
Yani dizine erişiyoruz dizi adı ve ardından alt simge değeri,
dizin değeri ve bir dizi kullanıyoruz.
Yani bu bir değişken her iterasyonda değişir.
Bu yüzden bunu çalıştırmaya çalışıyoruz.
Yapacağınız çıktı Birinci ayın 31 gün, ikinci ayın 28 gün olması bir tür
Ocak Şubat Mart Nisan, ama sadece dizisine ekler
ve günleri yazdırır.
Bu da kanıtlıyor ki başlatma çalışır.
Ve yine, isteyeceksiniz verilerinizi başlatmak için.
Şimdi başka bir konu hakkında konuşalım örneğini inceleyebilir ve tekrar eden başlatma öğeleri
hakkında konuşabilirsiniz.
İşte başka bir örnek, ancak bu örnekte belirlenmiş
bir başlatıcı kullanacağız.
Tam olarak ne yapacağımızı belirleyeceğiz. başlatmak istediğimiz öğeler.
Yani yapmanız gereken ana hat Burada dikkat ederseniz
günlere ve aylara göre başlatma işlemimizi yapıyoruz.
Kıvırcık içinde fark edeceksiniz
İlk elemanın 31, ikincinin 28 aldığı parantezler, ancak daha sonra parantez
içinde 4 yazan bir şey varsa, 31 değerini alacaktır.
O zaman bir virgülümüz var, 5. eleman 30, 6.
eleman 31 alacaktır.
Ve sonra 1.
Bu da demek oluyor ki 28'in üzerine yazacağız ve aslında bir 29 koyacağız,
29 olarak koyacağız.
Yani burada biraz gereksiz.
Bunu yapmamıza gerçekten gerek yok, ancak 31 ve 28
olduğu için alt-1'i gerçekten kaldırırsınız, sub-1 zaten buraya atanmıştır.
Ama görünüşe göre biz diyoruz ki sub-1 aynı zamanda 29 değeri de olabilir.
Yani bu sadece belirlenmiş başlatıcılar.
Peki ya biz aynı değeri tekrarlayın.
Şimdi c'de, her zaman 0 belirtirseniz tüm diziyi
aynı değerle başlatır.
Her zaman başlatabilirsiniz null parametresi gibi.
Ama bunun dışında, C dizi başlatmak için herhangi bir kısayol mekanizması
sağlar elemanları, en azından C89'da değil.
Yine C11'de görebilirsiniz, nerede parantezlerini kullanarak tüm diziye
aynı değeri başlatabilir alt simge olmadan sadece sayı.
Ama şu anda C89 ve C99'da tekrar sayısını belirtmenin bir yolu yok.
Tüm unsurları söylemenin bir yolu yok örneğin bu ışının 55 olması gerekir.
Yani başlangıçta istenseydi örnek verinin 500 değerinin
tümünü 1 olarak ayarlarsanız, 500 değerin tümü açıkça atanması gerekir ki bu da büyük
bir baş belası olur.
Yani sonunda yapacağın şey sadece bir döngünün içine koyun.
Yinelemenin en kolay yolu bir dizi boyunca bir döngü kullanın.
İşte size hızlı bir örnek tüm öğeleri aynı değere nasıl başlatabileceğinizi
açıklar.
Bu durumda, biz ilk öğelerin 0 1
4 9 ve 16 olarak başlatılması.
Yani bu gerçekten sadece kalan tüm öğeleri bir değere dönüştürür.
Esasen 6. unsur 5 ila 9 indeksini kullanan 10. eleman.
Yani bu for döngüsünün yaptığı şey bu.
İlk for döngüsü şunu söylüyor 5'ten 9'a kadar olan öğeleri I çarpı
I olacak şekilde başlatacağız.
Ve sonra ikincisi için Burada döngü var, girintili
olmalı, okuması daha zor.
İkinci for döngüsü aslında tüm dizinin içinden
geçerek ve sadece verileri görüntüleyerek son 5 değerin gerçekten başlatıldığını
gösterir.
Yani ne zaman tekrarlamak istersen aynı değere veya farklı değerlere
başlatmak için sadece bir döngü kullanın.
Yine, başlatma önemlidir.
Başlatmak isteyeceksiniz, bu yüzden Bu sözdiziminin sizin için ikinci doğa olduğundan
emin olun çünkü C'de dizileri oldukça fazla kullanıyor olacağım.