ROB BOWDEN: Merhaba, ben, Rob Bowden değilim ve en quiz0 bahsedelim.
>> Peki, ilk soru.
Bu soru nerede Numarayı kod için gerekli
İkili ampuller 127.
Eğer isteseydi, sen-ebil Düzenli dönüşüm yapmak
ondalık ikili için, bi-- veya gelen.
Ama muhtemelen gidiyor zaman bir sürü almak için.
Bunu anlamaya olabilir, yani, Tamam, 1, orada, 2 orada olduğunu
4 Orada, 8 orada olduğunu.
Kolay yolu, 127 128 eksi biridir.
O soldaki ampul 128-bit.
Yani 127 sadece tüm gerçekten Diğer ampullerin,
Bu soldaki beri ampul eksi 1.
O soru için bu kadar.
>> Soru biri.
3 bit ile Yani yapabilirsiniz 8 ayrı değerleri temsil eder.
Neden sonra, en büyük negatif olmayan 7 Eğer temsil edebilir ondalık tamsayı?
Peki, eğer biz sadece can 8 farklı değerleri temsil,
Sonra ne olacağız temsil ile 7 0.
0 değerlerden birini kaplıyor.
>> Soru iki.
N bit ile, ne kadar farklı değerler temsil edebilir?
Yani, n bit ile, 2'ye var Her bit için olası değerler.
Yani biz 2 olası değerleri için var ilk bit, 2 olası değerler
saniye, 2 üçte mümkün.
Ve böylece bu 2 kez 2 kez 2, ve sonuçta cevap n 2 'dir.
>> Soru üç.
Ikili 0x50 nedir?
Yani onaltılık bir çok olduğunu hatırlıyorum İkili için basit dönüşüm.
Yani burada, biz sadece bakmak gerekir 5 ve bağımsız bir şekilde 0.
Yani ikili 5 ne?
0101, bu 1 bit ve 4 biraz.
Ikili 0 neler var?
Zor değil.
0000.
Yani sadece onları biraraya koymak ve Bu ikili tam sayı.
01010000.
Eğer isteseydi Ve sen-ebil Bu soldaki sıfır çıkar.
Bu alakasız.
>> Sonra alternatif ondalık 0x50 nedir?
İstediğin Eğer iseniz, Yapabileceğim İkili daha rahat,
Eğer bu ikili cevabı alabilir ve ondalık içine dönüştürmek.
Ya da biz sadece hatırlıyor olabilir Bu onaltılık.
0 Böylece 0 inci sırada yer almaktadır, ve 5 ilk etapta 16'dan olduğunu.
Yani burada, biz 5 kez 16 var İlk, sıfıra artı 0 kez 16,
80.
Ve baktı eğer sorusuna başlık,
Bir tür oldu CS 80 oldu Bu sorunun cevabını ipucu.
>> Soru beş.
Biz hangi, bu Scratch komut dosyası var 4 kez fıstık ezmesi jöle tekrarlayarak.
Peki C kod artık bunu?
Peki, biz ötürü-- kalın yer var uygulamak zorunda sadece bir parçasıdır.
Bu yüzden 4 döngü var bir 4 döngü var Zaman, printf-ing fıstık ezmesi jöle,
Yeni hat ile sorun sorar gibi.
>> Soru altı, başka Scratch bir sorun.
Biz bir döngü içinde sonsuza dek olduğunu görüyoruz.
Biz değişken i söylüyorsun ve daha sonra 1 ile i artırılmıyor.
Şimdi C. vardır ki yapmak istiyorum Bu yapmış olabilir birden çok yolu.
Burada kod oldu Bir süre (gerçek) olarak sonsuza kadar döngü.
Yani biz sadece, değişkeni i beyan gibi biz Scratch değişken i vardı.
Değişken i bildirmek, ve sonsuza kadar (true) ise, biz değişkeni i say.
Printf% ben-- veya% d kullandım böylece.
Biz bu değişken demek, ve sonra artırmak, i ++.
>> Soru yedi.
Şimdi çok benzer bir şey yapmak istiyorum Mario nokta c sorunu bir set.
Biz bu Hashtag'leri yazdırmak istiyorum, Biz beş yazdırmak istiyorum
Bu sağlamalarının üç dikdörtgen tarafından.
Peki biz bunu yapacağız?
Peki, size bir bütün vermek kod demet, ve sadece
Baskı ızgara fonksiyonu doldurmak zorunda.
>> Peki PrintGrid benziyor?
Peki geçtik genişlik ve yükseklik.
Bu yüzden bir dış var 4 döngü, bu döngü var
Bu satırları tüm biz yazdırmak istediğiniz ızgara.
Sonra arası iç içe 4 döngü var her sütun üzerinde baskı var.
Yani her satır için, biz yazdırmak Her sütun, bir tek müzakere.
Sonra sıranın sonunda biz baskı bir tek bir yeni satır sonraki satıra gitmek için.
Ve bütün o ızgara için var.
>> Soru sekiz.
PrintGrid gibi bir işlev söyleniyor Bir dönüş, bir yan etkisi var, ama
değer.
Ayrım açıklar.
Yani bu hatırlayarak dayanır bir yan etkisi nedir.
Peki, bir dönüş value-- Biz PrintGrid değil biliyorum
çünkü, dönüş değeri Burada bu geçersiz diyor.
Void döndürür Yani bir şey Gerçekten hiçbir şey geri gelmez.
Yani yan etkisi nedir?
Peki, bir yan etkidir tür devam şey
fonksiyon sona erdikten sonra Bu, sadece iade değil
ve sadece girişlerden değildi.
>> Peki, örneğin, biz olabilir global bir değişken değiştirin.
Bu bir yan etkisi olur.
Bu özel durumda, çok önemli bir yan etkisi
ekrana yazdırıyor.
Yani bir yan etkidir Bu PrintGrid sahiptir.
Biz ekrana bunları yazdırmak.
Ve aklınıza gelebilecek bir yan etki olarak,
Bu şey beri Bu fonksiyon sona erdikten sonra devam.
O kapsamı dışında bir şey Bu fonksiyonun sonuçta
değiştirilir ediliyor, Ekranın içeriği.
>> Soru dokuz.
Aşağıdaki programı düşünün hangi satır numaraları ile
için eklendi tartışma uğruna.
Bu programda Yani biz sadece vardır saklayarak, GetString arayarak
Bu değişken s ve daha sonra Bu değişken s baskı.
TAMAM MI.
Hat bir mevcut neden bu kadar açıklar.
include CS50 nokta s.
Neden CS50 nokta h #include gerekiyor?
Peki biz diyorsun Fonksiyonu getString,
ve GetString tanımlanır CS50 kütüphanede.
Biz yoktu eğer öyleyse include CS50 nokta h
biz örtük beyanı alacağı GetString fonksiyonu hata
derleyici.
Bu yüzden library-- eklemeniz gerekir Biz başlık dosyası dahil etmek gerekir,
ya da başka bir derleyici olmaz GetString var olduğunu biliyoruz.
>> Hat iki mevcut açıklayın.
Yani standart io nokta h.
Bu aynı değil Önceki sorun olarak,
yerine uğraşan hariç GetString, biz printf bahsediyoruz.
Biz ihtiyacımız söylemedi Yani Standart io nokta h dahil,
o zaman mümkün olmaz printf fonksiyonunu kullanmak için,
derleyici nedeniyle bundan haberi olmaz.
>> Neden-- önemi nedir doğrultusunda dört geçersiz?
Yani burada biz int main (void) var.
Bu sadece bizlerin söylüyor herhangi bir komut satırı almıyorsanız
Ana argümanları.
Biz int söyleyebiliriz unutmayın Ana int argc dize argv parantez.
Yani burada biz sadece biz demek geçersiz say Komut satırı argümanları göz ardı edilir.
>> Tam olarak hafıza ile ilgili olarak, açıklar doğrultusunda ne GetString altı döner.
GetString bloğunu dönen Bellek, bir karakter dizisi.
Gerçekten dönen var ilk karakterine işaretçisi.
Bir dize bir karakter yıldızı olduğunu unutmayın.
Yani ilk bir gösterici karakter ne olursa olsun dizedir
Kullanıcı klavyeden girilen söyledi.
Ve bu bellek malloced olmak olur, böylece bellek yığın içinde.
>> Soru 13.
Aşağıdaki programı düşünün.
Peki tüm bu program yapıyor 10 bölü 1 printf-ing olduğunu.
Yani derlenmiş ve idam, bu program
çıkışları 0.0, olsa 10'a bölünür 1 0.1.
Peki neden 0.0?
Peki, bu çünkü tamsayı bölme.
Bu yüzden 1 arasında bir tamsayıdır 10, bir tam sayı olduğu, bir.
Yani 1 10, her şeyi bölü tamsayılar olarak tedavi edilir,
ve C, biz tamsayı bölme ne zaman, biz herhangi bir ondalık noktası kesecek.
Yani 1 10'a edilir bölünmüş 0 ve sonra biz çalışıyoruz
yani, bir şamandıra gibi bu yazdırmak için bir float olarak basılmış sıfır 0.0.
Biz 0.0 olsun Ve bu yüzden.
>> Aşağıdaki programı düşünün.
Şimdi 0.1 baskı ediyoruz.
Yani hiçbir tamsayı bölme, Biz sadece, 0.1 yazdırırken
ama biz baskı ediyoruz 28 ondalık basamağa.
Ve biz bu 0,1000, bir sürü olsun sıfır, 5 5 5, falan filan.
Bunu neden yaptığını Yani burada soru yerine tam 0.1, bu yazdırmak?
>> Burada neden şimdi Yani nokta belirsizlik kayan.
Bir şamandıra sadece 32 bit olduğunu unutmayın.
Yani biz sadece sınırlı sayıda temsil edebilir bu 32 ile kayan nokta değeri
bit.
Peki sonuçta sonsuz var Birçok kayan nokta değerleri,
ve kayan sonsuz sayıda var 0 ve 1 arasında puan değerleri,
ve tabii ki edebiliyoruz hatta daha değerleri temsil eder.
Yani biz fedakarlıklar yapmak zorunda En değerlerini temsil etmek mümkün.
0.1 gibi >> Yani bir değer, görünüşe biz tam olarak temsil edemez.
Bunun yerine 0.1 temsil yaptığımız en iyi biz bu 0.100000 5 5 temsil edebilir
5.
Ve bu, oldukça yakın ama Birçok uygulama için
hakkında endişelenmenize gerek nokta belirsizlik kayan,
biz sadece temsil edemez çünkü Tüm tam puan yüzen.
>> Soru 15.
Aşağıdaki kodu düşünün.
Biz sadece 1 artı 1 yazdırırken.
Yani burada hile var.
1 artı 1 2 değerlendirir ve o zaman bu baskı ediyoruz.
Bu sadece 2 yazdırır.
>> Soru 16.
Şimdi karakteri yazdırırken 1 artı 1 karakter.
Peki neden bu değil Aynı şeyi yazdırmak?
Peki karakteri 1 artı karakter 1, karakter 1 ASCII değeri 49 sahiptir.
Yani bu gerçekten 49 diyerek artı 49, ve sonuçta bu 98 yazdırmak için gidiyor.
Yani bu 2 yazmıyor.
>> Soru 17.
Uygulanmasını tamamlayın bu şekilde aşağıda tek
fonksiyonu true döndürür n bile eğer n tek ve yanlıştır.
Bu büyük bir amacı mod operatör için.
Yani bizim argüman n almak, n mod 2 de 1, eşitse
n, bölünmüş olduğu anlamına gelir 2 ile bir kalan vardı.
Burada n, 2 ile bölünmüş ise, kalan vardı n garip, bu yüzden doğru dönmek anlamına gelir.
Başka biz return false.
Ayrıca 2 eşittir mod n yapmış olabilir sıfır, başka, return false true döndürür.
>> Aşağıdaki özyinelemeli işlevi düşünün.
N Yani eğer daha az ya da 1 dönüş, 1'e eşit,
n eksi 1 f başka dönüş n kere.
Peki bu işlevi nedir?
Peki, bu sadece bir faktöryel fonksiyonu.
Bu güzel temsil edilir n faktöriyele.
>> Peki şimdi 19 soru, biz istiyoruz Bu özyinelemeli işlevi alır.
Biz yinelemeli yapmak istiyorum.
Peki nasıl bunu yapar?
Peki personel için çözeltisi ve yine orada
Eğer yapmış olabilir birden çok yolu Biz bu int ürünle başlamak
1 eşittir.
Ve bu boyunca döngüsü için, biz gidiyoruz
sonuçta Ürün çarparak edilmesi Tam faktöriyel ile sona.
Int i 2 eşittir Yani, i daha az ya da n eşittir, i ++.
Ben 2 eşittir neden >> Sen merak ediyor olabilirsiniz.
Peki, biz var burada unutmayın Bizim temel durum doğru olduğundan emin olun.
N daha az veya eşit Yani eğer 1, biz sadece 1 dönen ediyoruz.
Ben 2 eşittir burada üzerinde Yani, biz başlar.
Peki ben 1, olsaydı o zaman Şeyin veya n döngüsü daha sonra 1, olsaydı
tüm yürütmek olmaz.
Ve böylece biz sadece olur 1 dönüş ürünü.
Benzer şekilde, eğer n edildi daha az şey 1--
o 0, eğer negatif 1, whatever-- biz hala, 1 dönen olurdu
tam olarak hangi ne olduğunu özyinelemeli sürüm yapıyor.
>> Şimdi N büyük olması halinde, 1'den, daha sonra biz gidiyoruz
en az birini yapmak Bu döngü yineleme.
Öyleyse biz konum, en n 5 diyelim Ürün kez yapacaksın 2 eşittir.
Şimdi ürün 2.
Şimdi yapmamız gereken gidiyoruz Ürün süreleri 3 eşittir.
Şimdi 6 var.
Ürün kere şimdi 24 var, 4 eşittir.
Ürün kere şimdi bu 120 var, 5 eşittir.
Öyleyse sonuçta, biz dönen Doğru 5 faktöriyel 120.
>> Soru 20.
Bu doldurmak zorunda biridir herhangi bir algoritma ile, bu tabloda,
Gördüğümüz şey, bu Bu algoritmik çalıştırmak uygun
Zaman bu asimptotik çalışma süreleri.
Yani bir algoritma nedir ki 1, omega, ancak n, büyük, O?
Yani sonsuz olabilir Burada birçok cevaplar.
biz muhtemelen en gördüm bir sık sık sadece doğrusal arama motorudur.
>> En iyi durumda Yani senaryo, biz konum öğe
arıyor altındadır listesinin başında
ve bu yüzden 1 adım omega, Biz kontrol ilk şey,
biz sadece hemen dönmek biz madde bulundu.
En kötü senaryoya göre, öğe, sonunda
veya öğe hiç listesinde değil.
Yani biz aramak zorunda Tüm liste, tüm n
elementler, ve n o yüzden bu.
>> Peki şimdi ikisi de bir şey n günlük n omega ve n günlük n büyük Ç.
Peki en uygun şey Burada görülen tür birleştirme olduğunu ettik.
Yani sıralama, hatırlıyorum birleştirme, sonuçta teta olduğunu
teta tanımlanır n günlük n, bir Omega ve büyük Ç ikisi de aynı ise.
Hem n log n.
>> Omega olan bir şey neler var n ve n O kare?
Peki, yine var birden çok olası cevaplar.
Burada kabarcık sıralama söylemek olur.
Yerleştirme sıralama da burada çalışmak istiyorum.
Bu kabarcık sıralama hatırla bu optimizasyon burada sahip
almak mümkün olup olmadığını Tüm liste üzerinden
yapmak gerek kalmadan Herhangi swapları, sonra, iyi,
biz hemen o dönebilirsiniz Liste ile başlayan sıralama.
En iyi senaryo Yani o n sadece omega var.
Sadece bir güzel değilse ile başlayan liste sıralanır
o zaman n O swapları kare var.
Ve nihayet, biz seçim tür var n kare için, omega ve büyük O. hem
>> Soru 21.
Tamsayı taşması nedir?
De yine daha önce olduğu gibi, biz sadece sonlu sayıda bit var
arasında bir tamsayıyı temsil etmek üzere, belki 32 bit.
En bir imzalı tamsayı var diyelim.
Daha sonra nihai olarak yüksek pozitif sayı biz temsil edebilir
olduğunu 2-31 eksi 1.
Biz çalışırsanız ne olur daha sonra bu tamsayı artırmak?
Peki, biz 2-31 gitmek için gidiyoruz eksi 1, aşağı olumsuz 2 tüm yol
31.
Yani bu tamsayı taşması olduğunu Eğer artan tutmak zaman,
ve sonuçta yapamazsın herhangi bir yüksek ve sadece almak
tüm yolu geri sarar negatif bir değer etrafında.
>> Bir tampon taşması ne?
Bu nedenle, bir tampon overflow-- bir tampon olduğunu hatırlıyorum.
Bu bellek sadece bir yığın var.
Bir dizi gibi bir şey bir tampon olduğunu.
Yani bir bellek taşması zaman olduğu Eğer bellek erişmeye çalıştığınızda
Bu dizinin sonuna ötesinde.
Eğer bir var ise büyüklüğü 5 ve sizin dizisi
dizi desteğini erişmeye çalıştığınızda 5 veya dirsek 6 veya dirseği 7,
ötesinde ya da bir şey sonunda, hatta bir şey
below-- dizi dirseği negatif 1-- tüm bu tampon taşmaları vardır.
Kötü şekilde bellek dokunuyorsun.
>> Soru 23.
İhtiyacınız bu bir Yani strlen uygulamak.
Ve biz yapabilirsiniz söylüyoruz s boş olmayacak varsayalım,
böylece gerek yok null herhangi bir kontrol yapmak.
Ve birden çok yolu vardır Eğer bu yapmış olabilir.
Burada biz sadece basit almak.
Biz n, bir sayaç ile başlar. n, Orada kaç karakter sayma.
Yani biz o 0'dan başlar, ve tüm liste üzerinde yineleme.
>> Eşit s dirseği 0 mı boş terminatör karakter?
Aradığımız hatırla boş terminatör karakteri
Bizim dizedir ne kadar belirlemek için.
Bu sonlandırmak için gidiyor ilgili herhangi bir dize.
Yani s braket eşittir 0 null Terminatör için?
Değilse, o zaman biz gidiyoruz s aralığındaki 1, s aralığındaki 2 bakmak.
Biz biz kadar devam ediyoruz boş terminatör bulmak.
Biz bulduktan sonra, daha sonra n içerir dize toplam uzunluğu,
ve biz sadece o dönebilirsiniz.
>> Soru 24.
Yani bu bir nerede ticaret kapalı yapmak zorunda.
Yani bir şey birinde iyi ama ne şekilde yol kötü mü?
Yani burada, birleştirme sıralama eğilimi kabarcık sıralama daha hızlı.
Orada, iyi ki- söyledikten Birden cevaplar burada.
Ama asıl bir o kabarcık tür Bir sıralı liste için n omega olduğunu.
>> Biz sadece daha önce gördüğümüz tablo unutmayın.
Yani kabarcık ve omega sıralar n, en iyi senaryo
sadece üzerinde gitmek mümkün olmasıdır Liste kez belirlemek
hey bu şey zaten sıralanır ve dönüş.
Olursa olsun, sıralama Birleştirme ne Yapmanız n günlük n omega olduğunu.
Sıralanan liste için, kabarcık Yani sıralama hızlı olacak.
>> Şimdi ne bağlı listeleri hakkında?
Yani bir bağlantılı liste büyümeye ve küçültmek olabilir gerektiği gibi birçok öğeyi uygun.
Böylece ki- söyledikten genellikle direkt karşılaştırma
Bağlantılı olacak bir dizi listesi.
Yani bile diziler can olsa Kolayca büyümek ve küçültmek
gibi birçok öğeyi uygun gerektiği gibi, bir liste bağlı
Bir array-- An ile karşılaştırıldığında dizi rastgele erişimi vardır.
Biz herhangi birine endeksi can dizinin özel bir elemanı.
>> Yani bir bağlantılı liste için, biz değil Sadece beşinci element gidin,
Biz başından itibaren çapraz zorunda beşinci element elde edene kadar.
Ve bu bizi engellemek için gidiyor İkili arama gibi bir şey yapıyor.
İkili arama konuşan, ikili arama doğrusal arama daha hızlı olma eğilimindedir.
Ki- söyledikten böylece, olası bir şey
ikili yapamaz ki bağlantılı listelerde arama,
Sadece diziler üzerinde yapabilirsiniz.
Ama muhtemelen daha da önemlisi, Eğer ikili arama yapamaz
sıralanır bir dizi.
Ayarlıyoruz sıralamak gerekebilir dizi ve ancak o zaman olabilir
İkili arama yapmak.
Bir şey değil Yani ile başlayan sıralı,
Daha sonra doğrusal arama hızlı olabilir.
>> Soru 27.
Yani aşağıdaki programı düşünün, hangi sonraki slaytta olacak.
Ve bu konum biridir açıkça ifade etmek istiyorum olacak
Çeşitli değişkenler için değerleri.
Yani o bakalım.
>> Yani bir hat.
Biz int x 1 eşittir var.
Bu olanlardan tek şey.
Yani çizgi biri de, biz görmek bizim Tablo, ancak, y, a, b ve TMP hepsi
karartılmış.
Yani x nedir?
Peki biz sadece 1'e eşit olarak ayarlayın.
Ve sonra, iyi, iki satır biz y 2'ye ayarlanmış olduğunu görmek
ve tablo zaten Bizim için doldurulur.
Yani x 1'dir ve y, 2'dir.
>> Şimdi, çizgi üç, şimdi sen takas fonksiyonu içinde.
Ne takas geçmek mi?
Biz işareti x geçti b a ve işareti y.
Nerede sorun önce olduğunu ifade x adresi
0x10 ve y adresi 0x14 olup.
Bu nedenle a, b eşittir Sırasıyla 0x10 ve 0x14.
>> Şimdi, satır üçün de, x ve y nedir?
Peki, hiçbir şey değişti Bu noktada, x ve y ile ilgili.
Hatta onlar olmana rağmen bir ana yığın çerçevesi içinde,
onlar hala aynı var değerler daha önce yaptım.
Biz herhangi bir bellek modifiye değil.
Yani x 1'dir, y 2 'dir.
Tamam.
Yani şimdi biz yıldızı eşit int tmp dedi.
Yani çizgi dört, her şeyi de tmp dışında aynıdır.
Biz herhangi bir değer değişmemiştir tmp dışında bir şey.
Biz bir yıldız eşit tmp ayarı vardır.
Yıldız bir nedir?
Peki, bir puan x, Yani bir yıldız 1 eşit x, gidiyor.
Yani her şey kopyalanır aşağı ve tmp 1 olarak ayarlanır.
>> Şimdi bir sonraki satır.
Yıldız bir yıldız b eşittir.
Yani çizgi ile five-- iyi yine, her şey Yıldız, bir ne olursa olsun dışında aynıdır.
Yıldız bir nedir?
Peki, biz sadece yıldız bir x söyledi.
Bu yüzden eşit yıldız b x değiştiriyoruz.
Yıldız b nedir? y. y b işaret eder.
Yani yıldız b y.
Bu yüzden, y x eşittir ayarladığınız ve her şey aynıdır.
X şimdi Böylece önümüzdeki satırda görmek 2, ve geri kalanı sadece aşağı kopyalanır.
>> Şimdi bir sonraki satırda, yıldız b tmp eşittir.
Peki, biz sadece yıldız b y dedi, bu yüzden tmp y eşit kuruyoruz.
Her şey aynı, böylece her şeyi aşağı kopyalanan alır.
Biz hangi, tmp eşit y ayarı ediyoruz Başka biri ve her şey aynıdır.
>> Şimdi nihayet, çizgi yedi.
Biz geri ana işlevi konum.
Takas işlemi tamamlandıktan sonra biz konum.
Biz, b kaybetmiş, ve var tmp ancak sonuçta
Herhangi değerleri değiştirerek değil Bu noktada bir şey,
biz sadece x ve y aşağı kopyalayın.
Ve biz x ve y olduğunu görmek Şimdi 2 ve 1 yerine 1 ve 2.
takas başarıyla yürüttü.
>> Soru 28.
Karşılaşabileceğiniz varsayalım hata iletileri
ofis saatleri içinde aşağıda Bir CA veya TF gibi gelecek yıl.
Bu hataların her düzeltmek için nasıl tavsiyelerde.
GetString Yani tanımsız başvuru.
Neden bu görebilirsiniz?
Peki, bir öğrenci kullanıyorsa Kendi kod getString,
düzgün CS50 dahil Hash var nokta h CS50 kütüphane dahil etmek.
>> Peki, onlar ne Bu hatayı düzeltmek gerekir?
Onlar bir çizgi lcs50 yapmanız gereken onlar derliyorsunuz komut satırı.
Onlar geçemiyor Yani clang çizgi lcs50, onlar
Gerçek olması için gitmiyor GetString uygulayan kodu.
>> Soru 29.
Dolaylı olarak ilan kütüphane işlevi strlen.
Peki bu şimdi, onlar var uygun karma yapılan içerir.
Bu durumda, başlık dosyası Onlar, dize nokta h eklemeniz gerekir
ve şimdi dize nokta h dahil olmak üzere Şimdi student-- derleyici
erişebilir strlen beyanları,
ve bilir kodunuz ki doğru strlen kullanıyor.
>> Soru 30.
Daha yüzde dönüşümleri veri argümanlar daha.
Peki bu nedir?
Peki bu yüzde unutmayın onlar printf ilgili olduğunu nasıl signs--.
Yani printf biz percent-- olabilir Biz bir şey yazdırabilir
yüzde gibi ben n karakterler.
Yoksa biz yüzde i gibi yazdırabilir uzay, yüzde i, uzay, yüzde i.
Bunların her biri için Yani yüzde işaretleri, ihtiyacımız
Printf sonunda bir değişken geçmek için.
>> Yani biz derseniz printf parantez yüzde Ben, n yakın paren kullanılan karakterler
iyi, biz olduğumuzu söylemek Bir tamsayı yazdırmak için gidiyoruz,
ama sonra printf geçemiyor tamsayı aslında yazdırmak için.
Yani burada daha fazla yüzde veri argümanlar daha dönüşümleri?
Yani biz o söylüyor yüzdelerin bir sürü,
ve biz yeterince değişkenleri yok aslında bu yüzdeler doldurmak için.
>> Ve sonra kesinlikle söz 31, kesinlikle bir bloklarda 40 bayt kaybetti.
Yani bu bir Valgrind hatadır.
Bu söylüyor yere kodunuzu,
40 bir tahsisat var bayt büyük, böylece 40 byte malloced
ve bunu hiçbir zaman serbest.
Sadece ihtiyacınız Büyük olasılıkla Bazı bellek sızıntısı bulmak için,
ve gereken yere bulmak bellek bloğunu ücretsiz.
>> Ve 32 soru, büyüklüğü 4 geçersiz yazma.
Yine bu bir Valgrind hatadır.
Bu yapmak zorunda değildir Şimdi bellek sızıntıları ile.
Bu demek likely-- çoğu, bu, bir Geçersiz bellek haklarının çeşit.
Ve büyük olasılıkla bu bazı tampon taşması tür.
Nereye belki, bir dizi var bir tamsayı dizisi ve atalım
o boyutta 5 söylüyorlar, ve Dizi desteğini 5 dokunmaya çalışın.
Bunu yazmak için çalışırsanız yüzden değer, bellek bir parçası değil
Aslında erişimi, ve o böylece bu hatayı almak için gidiyoruz,
büyüklüğü 4 geçersiz yazma söyleyerek.
Valgrind sen tanımak için gidiyor uygunsuz bellek dokunmaya çalışıyor.
>> Ve bu quiz0 için var.
Ben Rob Bowden değilim, ve bu CS50 olduğunu.