ANDI PENG: Pekala.
Bölümün haftasında dört hoşgeldiniz.
Güzel bir gün Burada New Haven dışarı
böylece gerçekten seyrek düşünüyorum Çocuklar saçılması o
Bugün bölümü için beni katıldı, teşekkür ederim.
>> Yani hızlı, sadece biz önce bugün gündemi başlar.
Biz üzerine gidecek Birkaç kısa duyurular.
Biz gerçekten tuhaf bir program var Önümüzdeki iki hafta içinde geliyor
ya da öylesine biz üzerine gidiyoruz.
İkincisi, ben biliyorum herkesin en sevdiği topic--
Ben bu fikrinizi erimiş eminim derste, merak etmeyin,
Hala biraz onu alamadım.
Bu iyi.
Şakaydı.
Ben aslında bunu alırım.
Ama emin olacaktır Siz de olsun.
Yani bir geçireceksin Gerçekten, gerçekten iyi bir miktar
zaman bugün işaretçisi bahsediyoruz.
Gördüğünüz gibi, Şeker adlı konuşma, bugün çok büyük.
Biz gerçekten tutmak için gidiyoruz evet ki-, bu doğru.
Şeker alarak devam edin.
Şu anda onları etrafında geçmek gidiyorum.
Endişe etme.
Biz gerçekten denemek için gidiyoruz İnsanların kan şekerini tutmak için
beyin yakmak için gidiyor çünkü kadar Bazı oksijen bugün göstericiler nedeniyle
gerçekten zor, gerçekten.
Sonra hakkında konuşmak için gidiyoruz tür bir bellek yönetimi
Aynı alanda.
Ve biz taşımak için gidiyoruz yönlendirme ve dosyaya üzerine
Sadece sözdizimi I / O, güzel Konuşmamız gereken şeyler.
Ve sonra son olarak, ben bir kez daha deneyeceğim
pset4 10, 15 dakika gibi bırakmak.
Yani, biz konum bu yüzden bir kaç gün içinde bağlı olduğunu gidiş gerçekten tür vermek sen
bazı yararlı ipuçları eğer Zaten bu konuda başladık.
Güzel.
TAMAM.
Bu yüzden bazı duyurular Bu yaklaşan hafta için.
Puanlama.
Ben aslında hiç bilmiyorum Senin kaç bu noktada
çocuklar içinde aslında benim Orada Tamam section--?
TAMAM.
Ama, o sizin için Benim bölümünde kimsin,
sadece bir kaç sınıflandırma yorumluyor.
>> Yorumlama İlk, gerçekten iyi bir iş.
O sizin size, kim yorum yok muhtemelen çünkü sen kim olduğunu biliyorum
Bu hafta dinged bazı stil puan aldı.
Sadece emin olun tüm senin programlar birkaç yorum ekleyin.
Gerçekten, stil gerçekten kolay Bir kapsam olarak doğru puan almak.
Bizim için Yani, sadece yapmak Eğer naziksiniz emin
tüm kısa bir açıklama ekleyerek Eğer ne yaptığınızı hakkında programlar.
>> Secondly-- bunun için büyük bir sorundur Geçtiğimiz hafta-- TA bir sürü
böylece emin yüklediğiniz yapmak Doğru ile doğru klasöre
adlı programlar.
Ve biz bunun için sormak nedenidir çünkü biz, derecelendirilmesi sırasında,
aslında bir komut dosyası çalıştırmak senin otomatik olarak indirir kod
senin psets hepsi çalışır hepsi üzerinde doğruluğu testleri,
ve sonra puanları yüklenenler doğrudan not defterindeki içine.
Ancak, herhangi bir noktada, eğer yanlış programı seçildi,
entire kadar bu vidalar Herkes için bir program.
>> Ve böylece, meşru, Bu güzel senaryo
biz yapar yazdım o Bizim için tüm bu tamamen
Eğer yoksa çöküyor Programınız düzgün adlandırılmış.
Yani sadece doğru yükleyin Klasör, onlara doğru adında var
ve daha sonra hayat iyi.
Ben geri psets olsun Sizin çocuklar daha erken
Ben hızlı sınıfa onlara olsun çünkü.
Evet.
TAMAM.
Ve ayrıca biz konuşacağız about-- Yale gerçekten, gerçekten bir var
Bu önümüzdeki iki hafta içinde tuhaf zamanlama.
Sizlerle bu öylesine Harvard bu geçerli değildir.
Ama Yale'de bizim için güzel çocuklar biz sonbahar denilen şey, üzgünüm break--
Harvard-- biz nereye Okul kapalı beş gün.
Ve bu güzel iken, o tür bizim pset ritmini messes
psets Perşembe, Cuma nedeniyle çünkü.
Ve eğer öyleyse biz burada değiliz Perşembe, Cuma, biz
Sizin için çalışmalarını olamaz Perşembe, Cuma günleri nedeniyle.
>> Peki biz konum o-- yapacağız Bu ne oluyor ise% 99 emin gibi
olabilir Bazı değiştirmek ama düşünüyorum
subtle-- biz gidiyoruz olduğunu have-- bu hafta normaldir.
Yani biz bizim bölümü var Salı ofis saatleri takip
Haftanın geri kalanı boyunca ve sonra pset4 Cuma günü kaynaklanmaktadır.
Sonra hepiniz bildiğiniz gibi, olduğu gibi Ben, geçen hafta sizleri hatırlattı
Bizim sınav var 0 Çarşamba günü geliyor.
>> Ve böylece, kendimi bir öğrenci olmanın, Seninle çok az biliyoruz
adamlar aslında üzerinde çalışıyor olacak senin sınav iki gün önce pset5.
Peki biz gidiyoruz Muhtemelen isimli yapıyor sonunda,
Pazartesi gecesi, biz gidiyoruz gerçekte, 7:00 5:30 dan,
kısa bir inceleme var konularda oturumu kapalı.
Bir eğer Belirsiz oturumu veya bir Q & A gözden geçirin.
Bu yorum bir çeşit olacak Biz ele alacağız hangi formu
Sizin için uygun bazı konular.
>> Ve sonra Pazartesi ve Salı geceleri 8:00 11:00 bu hafta,
Biz ofis saatleri için gidiyoruz.
Bu ofis saatleri olacak en büyük olasılıkla, sadece gelip daha fazla olması
Tas ile ilgili soru sormak hakkında karıştı konum herhangi kavramlar,
ve onlar tür sizinle üzerine gidersiniz sınav ve yorum kavramları.
Quiz 0, sen iseniz Pazartesi, Çarşamba bölüm,
sırasında Çarşamba günü olacak sınıf sırasında Çarşamba günü class--.
Ve konum o takdirde Salı, Perşembe bölümü,
Perşembe günü sınıf sırasında da olacak.
Gerçekten seçemezsiniz hangisini gidin.
Bir Pazartesi, Çarşamba iseniz, Çarşamba gitmek zorunda.
Salı, Perşembe iseniz Perşembe gitmek zorunda.
Ama sonra o gece, Bize güzel personel, olacak
partiyi derecelendirilmesi dev bir sınav var hangi size geri puanları alırsınız
o gece.
Ne zaman?
Belirsiz, kim bilir, ama olacak 24 saat içinde size geri olması
böylece umarım siz Cuma gününe kadar bazı geribildirim var.
>> Ve sonra biz gerçekten tuhaf hafta var.
Böylece pset5 biridir Yılın en zor psets.
Çok üzgünüm çocuklar.
Ne denemek için gidiyoruz yapmak biz gidiyoruz olduğunu
bazı gerçek destek bu hafta sonu.
Çünkü siz, gördüğünüz gibi pset sonbahar tatili öncesinde kaynaklanmaktadır.
Biz destek yok sonbahar tatilinde çocuklar
ve bu yüzden gerçekten tür ifade etmek istiyorum, bu kadar,
Hadi birlikte halledeyim en gerçekten zor iş let
Bu önümüzdeki iki hafta, bu sınav olsun ile yapılan bu iki psets eklemek
ve sonra siz güzel bir rahatlatıcı var CS düşünmeden yedi gün.
>> Bunun için sırayla Yani , ne biz muhtemelen
Benim bölümünü hareket edecek Pazar öğleden sonra ile.
O kadar çekilecek hayır endişeler Gelip edemez.
Ancak çevrimiçi filme olacak Orada ve erişilebilir
böylece siz Pazar olması, Pazartesi, Salı, pset5 üzerinde çalışmak için.
Ve o zaman sonbahar var Sonra kırmak ve hiçbir CS ve
Biz geri gelip eziyet onun sırt.
>> Ama olacak Sonbahar tatili için güzel bir hafta
ve biz gerçekten stres olarak bunu yapmak istiyorum mümkün olduğunca herkes için ücretsiz olan
Biz taşındık neden pset nedeniyle olmaktır sonra sonbahar sonu ziyade önce.
Demek bu--, ben tür hissediyorum çünkü o sahip amacı yendi gibi
varsa sonbahar aradan sonra son sonbahar tatilinde neyse herhangi bir destek.
Bu yüzden sanırım rather-- var biz oldukça şimdi odaklanmak istiyorum.
Herkes soruları var mı Bu program hakkında?
Bir şey kafa karıştırıcı?
Evet.
>> HEDEF KİTLE: biz hala var mı 21 bir konferans?
ANDI PENG: Evet.
21 Yani, orada olacak Harvard canlı bir ders.
David filme olup olmadığını bilmiyorum o ya da, o aslında ders eğer
ama mevcut olacak Erişmeye çocuklar için çevrimiçi.
Yani sadece bir bölmek emin olun sonbahar tatili yerde saat dışarı
böylece siz yakalayabilirsiniz Bu ders üzerinde.
Evet?
>> HEDEF KİTLE: Evet.
Özür dilerim.
Burada bir couple-- var
>> ANDI PENG: Endişeye gerek yok.
Burada, bazı şeker almak.
>> HEDEF KİTLE: Hey, ben yakaladım.
Dolayısıyla, sadece yarın değil, tekrarlamak ama Bundan sonra Çarşamba, biz bir sınav var.
ANDI PENG: Doğru.
HEDEF KİTLE: Ve şey olmak gidiyor sınav formatı nedir?
ANDI PENG: Oh.
Yani biz bir e-posta göndermek edeceğiz derinlemesine tüm bu daha kapsar.
Ama, temelde, sadece kapakları Temel konular zaten örtülü
dönemin ilk yarısında.
Biz yorum oturumları ve soru olacak ve bu konuda hiçbir endişe cevapları.
Ama biz çok üzerinde gidiyorum.
HEDEF KİTLE: Bu olacak mı, biz Bizim bilgisayar ve kod getirmek orada--
ANDI PENG: Hayır
Bu yazma çocuklar olacak ve elle soruları yanıtlayan.
>> HEDEF KİTLE: Oh.
>> ANDI PENG: Yani biz vereceğiz dışarı uygulamalar ve malzeme
bu yüzden siz belki gitmek isteyebilirsiniz sırt ve elle Mario yeniden sadece
Emin siz sahip olmak için Bunun nasıl bir fikir.
Bazen ne zaman Çünkü Eğer elle size göre yazmak
noktalı virgül ve şeyleri unutmak ve bu gerçekten kötü.
HEDEF KİTLE: Bu [inaudible] olmayacak mı?
Mesela, alıyoruz Senin- bir noktalı virgül
>> ANDI PENG: Evet ve hayır.
Biz derinlemesine daha fazla konuşacağız sınav düzeni nasıl dair
ve nasıl sınıfa gidiyoruz.
Ama esasen, sadece biliyorum genel format sizi olacak
adamlar code-- yorumlama ya Temel sorulara cevap.
Seni sorsaydım, kütüphane nedir?
Siz bilmeli ne Kütüphane yapar ve bu yazınız.
Ya ben bir program yazmak, söylemek olabilir Hello World ekranına yazdırır.
Ana Siz yazarsınız, int hükümsüz printf merhaba dünya noktalı virgül.
Evet.
>> HEDEF KİTLE: Yani gitmiyor herhangi bir yerde olmak [duyulamaz]
Sorunun zorluk seviyesi ayarlayın?
>> ANDI PENG: Hayır
Hayır.
Biz evet o-.
Bütününü Yazın 15 20 dakika oyun, gidin.
Hayır, öyle olmayacak.
Hayır.
HEDEF KİTLE: Tamam.
Yani çarşamba.
Bu hafta da biz sırasında En zor problem belirledik?
ANDI PENG: Hayır
Yani sorun nedeniyle set sonbahar tatili bir gün önce.
Schedule-- e-posta aslında dışarı göndermek oldu
20 dakika önce tüm bu ilgili.
Yani siz sadece e-postalarınızı kontrol.
Orada olacak.
Evet.
Endişe etme.
Güzel.
>> Ilgili her türlü genel sorular duyurular, derecelendirme, sınavlar,
biz doğru dalmak önce tüketecek göstericiler
Bizim bölüm zaman çoğunluğu bugün?
Güzel.
Pekala.
Yani yaptığımız hepiniz bu lovely-- izle Ben diyorlar bilmiyorum.
Şey burada claymation kendini havaya uçurdu çünkü o
Doğru bir gösterici kullanmak vermedi.
Peki, programınızı gidiyor eğer muhtemelen kendini havaya uçurmak
doğru yanı işaretçileri kullanmak yok.
Yani biz yapmak için gidiyoruz emin olmaz.
>> Biz gidiyoruz Bugün Bazı gösterici eğlenceli yapmak.
Ben şeye gidiyorum olarak sorunsuz olarak düşünüyorum
Küçük bir süre içinde yapılabilir.
Ama karşılamak için sadece çok şey var Gerçekten siz istediğiniz,
Bir şey anlamak yoksa, sadece beni devam edelim.
Bunu yapmazsanız Çünkü şey anlamak,
muhtemelen gitmiyorsun Ondan sonra söylemek bir şey anlıyorum.
Yani beni durdurmak ve bir soru sormak lütfen.
Bunun her türlü Çünkü araya snowballs.
Gibi, göstericiler içine kurşun Diğer şeylerin içine bellek kurşun.
Ve böylece işaretçiler anlamıyorum eğer, Beni durdurmak ve biz bunu anlamaya edeceğiz
ve hayat iyi olacak.
>> Güzel.
Peki dersinde Sizinle birçok, David işaretçileri bahsedilen zaman,
senin beynini tür jöle dönüştü?
Evet.
İyi.
Biz denemek için gidiyoruz de-jöle beynini bugün.
Biz gerçekten sistematik gidiyoruz Tam bir işaretçi nedir geçmesi,
öyle ve biz bunları nasıl kullandığımız.
>> Yani hepsi çok pointers-- Normalde değişkenlerle
bizim gibi, kodlama kullanıyorum Bu tür tamsayı veya dizeleri gibi değişkenler
veya yüzer, hepsi temelde konum kendilerine atanan bir değer
yanı sıra bir adres bu değere işaret.
Yani şimdi bu hakkı çizmek için gidiyorum.
Biz hemen hemen hiç tebeşir var ama bu sorun değil.
>> Yani, örneğin, normalde biz ettik yolu
değişkenleri kullanıyorum biz oluşturmak olduğunu int türünde değişken adı, diyelim
sadece söyle.
Yani burada biz int x var ve biz konum 50 O int başlatılıyor.
Yani burada belleğin bu blokta bizim Bilgisayarlar, biz 50 sayı kaydetmiş.
Işaretçileri devreye girer böyledir Bu bilgisayar, burada, gibi itself--
fiziksel sabit disk Benim computer-- RAM içinde
sadece bellek sınırlı miktarda vardır.
Sadece bir şeyler saklamak devam edemez şeyin üstünde şeyler üzerine
ve hepsini yok.
>> Yani şekilde biz dinamik tahsis olduğunu Bellek ne istediğimizi saklamak mümkün
ve erişim bu işaretçileri olan gereğidir.
Yani doğru, bellek alanında düşünün.
Bu RAM ise senin Bilgisayar, bu küçük bit var
bloklar veya hafıza bayt veya bunlar sadece küçük olduğu hususların
üzerinde tahsis edilmiş bloklar Bilgisayarınızın sabit disk ya da RAM,
ve bu blokların her biri içinde Eğer farklı şeyler saklayabilirsiniz.
Yani, örneğin, bir tane Bu örnekte, bir dizi
burada tek byte Sekiz bitten oluşan.
Numara bağlı olarak değişir Bilgisayarınızın işletim sistemi.
Örneğin, kaç senin var 64-bit işletim karşı 32-bit duydum
sistemler?
Kesinlikle.
>> Böylece tüm söyleyerek bu memory-- olmasıdır
yol, bilgisayarınızın o Hafıza farklıdır yönetir.
Gerçekten bu neden olan anlamak önemlidir
Neden bellek kendisi işlevleri yerine daha numaralara dikkat edin.
Yani biz gerçekten umurumda değil bu nasıl dizi büyük
biz sadece umurumda gerekir ise ne kadar büyük biz olmak bir int ihtiyacım var,
ne kadar büyük do bir dize ihtiyacımız olmak, bir işaretçi nasıl büyük?
TAMAM.
Bu yüzden bir çok olacak ağır, yoğun bilgi.
Ben Sizi vereceğim Burada birkaç komik kabartma anlar.
Siz bütün gerekir Şimdi bunu anlamak için.
Biz biliyoruz çünkü göstericiler adresler,
ve bu değişkenler farklıdır.
TAMAM.
Güzel.
CS espriler evet, en iyisi mi?
>> Yani biz gitmek yolu Bir işaretçi oluşturma hakkında
sözdizimi çok özel bir tür olduğunu.
Herhangi oluşturma gibi değişkenin türü, bu kadar
Belirli olacak biz bunu oluşturmak için kullanabilirsiniz sözdizimi.
Yani herhangi işaretçi bildirirken, Bir gösterici sadece essentially-- olduğunu
Ben önemli bence İşaretçiler bir parçasıdır
değişken oysa bu Bir değer ve bir adres, hem
Bir gösterici bir adres.
Onun değeri bir adres.
Yani saklanan bir adres var Farklı bir adreste.
Herhangi bir mantıklı olursa.
Biz, daha ayrıntılı olarak üzerinde gidersiniz ama bu genel form
Yazıcı nasıl depolandığını Neden-- evi.
>> Yani bir işaretçi oluşturmak yolu Verilerin ne tür yaparak olduğunu
işaretçi gidiyor referans ve olmaya zaten--
Daha sonra star-- ile işaretçi adı.
Yani burada, eğer biz istedik bir işaretçi oluşturmak için
bir tamsayı doğru çekti ve biz işaretçi adı x olmak istedim,
Biz int yıldız x yapardı.
Evet?
>> HEDEF KİTLE: Ve eğer öyleyse Aşağıdaki satırı size
int x yapmak, olacak int yıldız x x konumunu göstermektedir
sonradan tanımlarken musun?
>> ANDI PENG: Gerçekten iyi bir soru.
Bu in üzerine gidersiniz Bir çift daha sonra kayar.
Evet.
Ve daha sonra da aynı şey karakter ve aynı şey yüzer.
Sadece bu noktada biliyor Biz bir işaretçi yarattık,
biz aslında set değil Henüz bir şey eşit.
Biz aslında başvurulan değil.
Aynı şey burada Eğer bir değişken oluşturmak,
Eğer değişkenin adını yarattık, Aslında buna bir değeri yok.
Burada aynı şey.
>> TAMAM.
Peki işaretçiler değerleri ayarlayabilirim?
Bu referans ve kaldırma tarafından bu.
Yani şekilde biz referans olabilir Bir özünde, bir gösterici varia--
biz bellek adresi iade bu değişken depolanır.
Ben bir pointer-- olsaydı çekersiniz Yani Bu kez biz, sonraki slayta olsun
ama sadece temelde, biliyorum, işareti ve-
ve variable-- tüm Size adresi söyleyeyim olduğunu yapar
nerede bir şey saklanır.
Ve başvurusu kaldırma tersidir Sadece yıldız olan o, bir.
Yıldız, sadece size gerçek verir bu adreste saklanan veriler.
>> Yani kimse seni adresi verir Bir adreste saklanır,
Diğer size gerçek verir adresinde saklanan değer.
Yani ikisi vermek Eğer farklı şeyler.
Bir kez daha, slaytlar tüm online yüzden hiçbir endişe
Siz kopya edemez zaman içinde bu aşağı.
>> Yani bir göz atalım Burada bu örneğe.
Yani biz bir dev var Burada bellek dizisi, değil mi?
Biz sadece bloklar var Nerede hafıza hafıza veya bayt,
hangi biz farklı şeyler saklayabilirsiniz.
Sadece bunlar diyelim Bellekte adres puan.
Yani her zaman var - 0x bakın bütün bu olduğunu anlatıyor
bir onaltılık basamak var.
Hepiniz, sayılar bildiği gibi Farklı üslerinde dayalı olabilir.
Base 10 nasıl tipik numaralarını yorumlamak.
Ikili taban 2 de var.
Ve bu durumda, onaltılık taban 16.
Bu demenin farklı bir yolu 10-- sıfır ya da sıfırdan dokuza
ve daha sonra, aynı zamanda, A, B, C, D, E, F Ayrıca farklı numaralar başvuruyor.
Davut kısaca konuşmasında bu gitti.
Siz ise şaşkın, sadece Google'da.
Öğrenmek için gerçekten çok kolay yolu var onaltılık basamak nedir.
Bütün bu gerçekten alakalı Şu anda sizin için
adamlar a bilmek C onaltılık basamak
siz-- anlatır tipik olarak Bir işaretçi olduğunu söyler.
Ya da bir adres.
>> Yani burada bu örnekte, int x 5 eşittir.
Biz integer-- oluşturuyorsanız Çeşidi üzgünüm, değişken
tamsayı ve 5'e başlatılıyor ediyoruz.
Yani burada bizim hafıza kartındaki, biz gördüğünüz x 0x0 adreste
ve var değeri bu 5'tir içinde saklanır.
Bu mantıklı olmalıdır Herkese, değil mi?
TAMAM.
>> Ve sonra biz ne yaptık kod ikinci satırında
biz yarattık ki int türünde bir gösterici.
İşte ne int Yıldız işaretçi yapıyor.
Ve bu eşit olduğunu işareti x Sana bir şey adresini vererek olduğunu.
X adresinde Yani Bu örnekte, 0x0 olup.
Ve böylece adres ediliyor Bu işaretçi saklanır.
Bu herkese mantıklı mı?
>> Yani bu-- düşünüyorum Burada pointers-- düşünüyorum
Yale bir posta kutusu sistemine sahip Her öğrencinin bir posta sahip olduğu
Eğer nereye adresi LW bodruma
ve sadece gidip kapmak olabilir ne olursa olsun o adrese ihtiyacınız.
Aynı şey oluyor Burada bir bilgisayar.
Bu hafıza bayt var Eğer bilgi içine saklayabilirsiniz
ancak sipariş bilmek hangi bilgi parçaları
bulmak için çalışıyoruz ne kadar maç ve, bir işaretçi gereken yere bu
oraya nasıl gideceğini söyler.
>> Yani, örneğin, benim için, benim posta kutusu, Belirli bir beş basamaklı bir numara var.
O benim adresim.
Yani fiziksel olarak belleğe gidebilir, Ben adresinde bakabilirsiniz
O PO kutusuna gidebilir ve içindeki verilere erişmek.
Bu Herkese mantıklı mı Bilgisayarınız esasen
aynı şeyi yapıyor.
>> Bu nedenle tüm işaretçi yapıyor olmasıdır Sadece bir hafıza yaratıyor
ve bellek veri aslında başka bir şey adresi.
Sonra gidip o bulabilirsiniz.
Herkes iyi?
Şimdiye kadar bana iyi herkes?
TAMAM.
Güzel.
Pekala.
Daha önce olduğu gibi Yani hemen hemen aynı şey.
Bu yüzden ilk olarak, bir değişken var adı X burada case--
Ben 5 bu değeri değiştirmek için gidiyorum.
Sadece adres diyelim bellekte bu 0x0'dır.
00.
Büyük.
>> Öyleyse, bizim ikinci kod satırı, biz konum
bir işaretçi oluşturmak için gidiyor ptr işaretçi denir.
Ve bu adresi, haydi sadece hafızada 0x01 olduğunu söylüyorlar.
Ve biz aslında istiyoruz işareti store--
x sana ne x adresini verir.
Ve x adresi 0x00 oldu.
Yani bu işaretçi şimdi aslında adresine sahip
ne x onun değeri olarak depolanmaktadır.
Bugüne kadar benimle herkes?
Güzel.
>> Ve sonra, yolu, biz kopya olur,
Biz beyan ve başlatmak olsaydı olduğunu int türünde bellek başka blok.
Sağ?
Bu bir int olacaktır.
Bu kopya olacağını söyledi.
Ve bunu get-- gidiyoruz Yıldız işaretçi verir
Bu adresten gerçek veri.
Işareti size adresini verir, Yıldız sana verileri verir.
Işaretçi öylesine veri.
Bu işaretçi 5 işaret ediyor.
Ve böylece bu fonksiyon yıldız burada-- pointer--
gider de ne olursa olsun alır Bu blok ve burada depolar.
Herkes bu oldu nasıl anlaşılır?
>> Yani iki operatör doğru orada-- işareti ve star--
sadece farklı şeyler yapmak işaretçileri kullanıldığında.
Bir Size adresi alır, tek Size gerçek değerini alır.
Yani siz ne zaman emin olun Eğer ikisini karıştırmayın kodlama
onlar çok farklı çünkü.
Burada bir 0x01 güzel bir örnek var.
Bu gerçekten güzel az sayıda hatırlamak.
Gerçek bilgisayarında Eğer zorunda gidiyoruz
şey dev bir eşek numarası Bu hoş değil, hoş değil bu.
Bazı çöp değeri olacak.
Ve bu yüzden, gerçekten gidiyor gerçekten pisliği programlarınızı.
Bu çok önemli Şu anda sahip olduğumuz
gibi neden-- aşağı temelleri, fiziksel olarak ne zaman ne oluyor
kod bu bloklar koşuyoruz.
Evet herkes--?
>> HEDEF KİTLE: int x int kopyası eşittir Yani?
>> ANDI PENG: Hayır, çünkü bu durumda, int x-- x-- değeri sağ, 5 eşittir?
Ve sonra int kopya 5 eşittir.
Yani sanki onları eşit için birbirlerine onlar tamsayılar çünkü,
Evet, onlar gerçek olarak değerlendirmek istiyorum.
Ama bellekte dizeleri gibi, olsaydı Davut Örneğin sırasında yaptığı tek,
farklı çünkü Onlar baþvurduðunuzu
bellekte yer adresleri ve onlar yanlış denk olur.
>> Sen çünkü doğru olacaktır burada çok doğrudan integers-- values-- karşılaştırarak
ama diğerleri sen referans noktaları.
Bir dize, bir dizi olduğu için ve Bay Kane bu later-- bahsedeceğiz
ama dizi aslında sadece bir olduğunu bellekte karakter bir demet işaretçisi.
Yani o biraz farklıdır.
Ancak bu durumda, evet, Bunu yapabilirdi.
>> HEDEF KİTLE: açıklayabilir misiniz kopya adresi?
ANDI PENG: Evet.
Böylece sadece-- Ben bu Bir değer doldurmak vermedi
ama diğer sadece bazı rasgele var biz umurumda değil çöp değer.
Program başladıktan sonra Çünkü Eğer biz aslında yok olduğunu fark
Gerçekten ne umurumda Gerçek adresleri vardır
biz sadece bilmek gerekir Ne adreslerde var.
Evet.
>> HEDEF KİTLE: on int sonraki yıldız İkinci satır, farklı edemememden var
ANDI PENG: Evet.
HEDEF KİTLE: --the dereferencing ve yıldız referans?
ANDI PENG: Evet.
C- yazarları Yani kim dilini yazmaya karar verdim C-
çok akıllı değildi.
Onlar çalışırken çok akıllı değil Bunu yapmalıyız anlamaya.
O bendim, ben kesinlikle olur İki farklı karakterleri kullanın.
Ama aynı bir kullanmaya karar verdi.
>> Yani bir int sonra yıldızı, Bu bilgisayar söyler
Eğer bir işaretçi oluşturmak üzereyiz söyledi.
Ama dereference etmeye çalışıyorsanız şey-- diğer bir deyişle,
adrese gidin ve çekin somewhere-- verileri
Yıldız farklı kullanılır.
Yani siz sadece konusunda dikkatli olmak değil iki kullanır çıkmasını.
Güzel.
Evet?
>> HEDEF KİTLE: Yani lazım tekrarlamak Ben following-- olduğumu emin olun
>> ANDI PENG: Tamamen iyi.
>> HEDEF KİTLE: sol tarafında --in Bu slayt, biz biliyoruz, bir şey yapmak.
Biz bir tamsayı bildirmek [Duyulamaz] 5'e eşit olduğu.
ANDI PENG: Evet.
HEDEF KİTLE: Doğru.
Ve sonra biz bir int yıldız şey var ve Tamam, biraz biz gibi, diyor
Şimdi, bir tamsayı ilan Biz bir işaretçi ilan ediyoruz.
ANDI PENG: Doğru.
Doğru.
>> HEDEF KİTLE: Sağ?
Ve bizim gösterici ptr olduğunu.
>> ANDI PENG: Evet.
Işaretçi adı ptr olduğunu.
Pointer.
HEDEF KİTLE: Ve o zaman Sadece C söyler NX eşittir
en değer erişmek istiyor o değeri tam sayı x x-- tamsayıdır
atandı.
>> ANDI PENG: Dikkatli olun işareti aslında x çünkü
sen-- bilgisayar söyler size x ne adresini çekmek istiyorum.
Yani işareti verir adres, yıldız size değer verir.
>> HEDEF KİTLE: Yani biz adresini istiyoruz.
En x at-- oldu diyelim
ANDI PENG: Biz aslında Doğru ne x biliyor musun?
Biz Ben-- o x Çünkü biliyorum Bu uyduruyor ama diyelim,
keyfi, o 0x00 oldu.
Sağ?
Yani biz Adres 0x00 olduğunu biliyorum, ve bu yüzden biz gidip ampersand x zaman,
biz biliyoruz 0x00 değerlendirmek gerekir.
Hangi biz saklanan neden Bizim işaretçi değeri olarak.
bu mantıklı mı?
>> HEDEF KİTLE: Evet.
Ve kopya inceleyebilirsiniz ptr-- gider
ANDI PENG: Doğru.
HEDEF KİTLE: --which olduğunu biz ettik bir işaretçi
bize beyan tamsayı x adresi.
>> ANDI PENG: Evet.
>> HEDEF KİTLE: Ve bu bir olgu, yıldız ptr
= 5 x değerine eşit.
>> ANDI PENG: Doğru.
>> HEDEF KİTLE: Serin.
Ve bu almak için basit bir yoldur Bu ya da sadece bu yol--
ANDI PENG: Peki şu anda Bizim için çok mantıklı görünmüyor
yapıyor, bu zaman harcamak için Bu süper karmaşık bir şey olduğunda
Tüm biz sadece iki oluşturmak olduğunu yaptık 5 değeri ile tamsayılar, değil mi?
Bu mantıklı değil.
Ama bir kez biz üzerinden gidersiniz bellek ayırma ve- yaparız
bu neden olabilir gitmek kullanışlı ve yararlı sonra.
Ben sadece yok Dediğimde bana güven sizin için bu keyfi işlevler oluşturmak
Biz çünkü adamlar öğrenmek Sizinle uğraşmak için çalışıyor.
Orada aslında tüm bunlar için kullandığı şeyler ve biz onlar hakkında konuşacağız.
>> HEDEF KİTLE: Korku.
>> ANDI PENG: Evet.
>> HEDEF KİTLE: [duyulamaz].
>> ANDI PENG: İyi bir soru.
>> HEDEF KİTLE: [duyulamaz].
>> ANDI PENG: Öyle değil.
Gerçekten değil.
HEDEF KİTLE: --two değişkenler bu da eşit [duyulamaz].
TAMAM.
>> ANDI PENG: Evet.
TAMAM.
Ben geçmeden önce, herkes açıktır?
Ben biraz geç aldım, Taylor biliyorum.
Tamam.
Bu çevrimiçi olduğunu.
İlk 20 izleyeceğim dakika ve tüm iyi olacak.
TAMAM.
Güzel.
>> Pekala.
Yani bu temelde tür bir biz sadece yaptığımız benzer bir şey.
Bu sadece bir grafik formda var.
Ne izlemek olsaydı oluverdi, int x, 5 eşittir
Bütün bu nokta da yaptık int türünde x isimli bir değişken oluşturmak.
Biz saklamak için gidiyoruz Bunun 5 iç değeri.
Biz değil, çünkü hiçbir işaretçi var aslında doğru, henüz bir gösterici yarattı?
Ve sonra bir sonraki içinde çizgi, int yıldız işaretçi,
biz aslında nereli işte fiziksel işaretçi oluşturma
ve biz bu ayarı ediyoruz ya da referans eşit
işareti x işaretçi.
Hangi nerede olursanız olun içinde hafıza Bu olması oldu.
Aslında rahatsız etmedi Bir değer bu sefer oluşturan.
Ancak bu durumda, o nokta Eğer eşit olacaktır.
>> Ve sonra orada, yıldız işaretçiyi kaldırma olduğunu.
Biz konum İşte bu noktada bilgi çekerek.
Yani x bu değeri aslında 35 eşit olacak.
Bu yüzden bu noktada, biz aslında ettik Sadece 35 x yeniden başlatılmakta
Aslında x dokunmadan.
Sadece işaretçi Bu, x işaret ediyordu
biz aslında ne x değiştirebilirsiniz.
Ben de bu dışarı çekmek için gidiyorum.
>> Yani burada biz yarattık Burada bazı rasgele adres.
Sadece tekrar 0x00 diyelim.
Sadece bu adres diyelim.
Ve biz bir tamsayı adlı x yarattık ve bunu atadığınız değeri 5'tir.
İkinci satırda, int pointer-- şimdi biz ettik
Bu ikinci şey var burada adı pointer--
ve biz diyelim aşağıdaki amaçlara gidiyoruz diğer bazı rasgele bellek adresi.
>> Yani biz bu ayarlamak için gidiyoruz ne olursa olsun eşit oldu.
Ve bu işaretçi gidiyor x değeri doğru işaret
Ve sonra, biz değiştirirseniz Şeyin biz yıldız işaretçi yaparsak,
Buna gidiyor Bizim işaretçi değeri.
Bu durumda, bu parça olacak Bu x bu değere üzerinde ok
ve 35 bunu değiştirmek için gidiyor.
Etkili, biz sadece değişti x dokunmadan x.
Sadece referans işaretçileri sayesinde, biz gidip x değerini değiştirebilirsiniz.
bu mantıklı mı?
>> Yani bu şekilde biz aslında yeniden adlandırabilir ve rechange ve yeniden atamakta değerler
we did not şeyler Aslında kendimizi yapmak.
Bu herkese mantıklı mı?
Güzel.
TAMAM.
Burada çok karmaşık grafik.
Satır satır gidin.
Esasen, sadece tam yapmak Ben sadece yaptım aynı şeyi.
Ben taşınmadan önce, ben Gerçekten sadece yapmak istiyorum
Herkesin bu konuda gerçekten açıktır.
Buraya kadar Yani elimizdeki kodu int 3 eşittir b 4 eşittir, c 5 eşittir.
Bu yüzden adında üç tamsayı yarattık a, b ve 3, 4 ve 5'e eşittir, c.
Ve sonra biz üç işaretçiler yaratıyoruz Bu değişkenlerin her birine o nokta.
>> Ve şimdi biz gidiyoruz esasen üzerinden gitmek
Üzerlerinde çalıştırdığınız zaman ne olur.
Yani onları çizin.
I do not paper-- bir sayfa alın Siz tüm kağıtları varsa bilmek,
ama o sizin belki Bilmeyenler yapmak sizin kim ödünç.
Kağıt yaprak alın ve satır satır gidin.
Ve bunu her operasyonda, Ben sizler aslında dışarı yazmak istiyorum
Bu noktada, b ve c ne.
Adresleri nelerdir ve ne a, b ve c işaret işaretçileri
Bu noktada?
>> Ve sonra umarım bu tür sizleri adım olacaktır
işaretçileri düşünmek nasıl aracılığıyla.
Biz gitmek için gidiyoruz değil bunların tümü boyunca uzanabilir.
Belki de five-- vereceğim gibi üç dakika.
Ilk birkaç on başlayın.
Ah.
Üzgünüz.
>> HEDEF KİTLE: İkinci satırda, neden Yıldız [duyulamaz] değişken değildir?
>> ANDI'nin PENG: in Ol operatörler, ilk haftasında,
biz hakkında konuştuk artı eşittir yaparsanız,
bu sadece bir artı c eşittir anlamına gelir.
Bu case-- yüzden bu başka bir şeydir Yıldız kullanılabilir hangi yolu.
Referans ek olarak ve işaretçiler ilan
Ayrıca öyle hatırlıyorum çarpma anlamına gelir.
Bu yüzden, bu durumda, sadece olur a kere c eşittir olacak.
Bu sadece farklı değil yazılı yolu.
>> HEDEF KİTLE: a kere c eşittir.
ANDI PENG: Evet.
>> HEDEF KİTLE: Bu eğer ne anlama geliyor bir işareti mektup diyor?
>> ANDI PENG: Ampersand araçları Eğer sen ki- gidiyoruz
göstericidir yere gidiş işaret ve adresi çekerek.
Yani işareti Size adresi verir, yıldız var size gerçek değerini verir.
>> HEDEF KİTLE: Biz Are satır satır üzerine bina?
>> ANDI PENG: Sen satır satır üzerine bina.
Dolayısıyla, sadece az bir satır gitmek Bir zaman ve sonra-- seni
hakkında endişelenmenize gerek yok Her şeyi bitirme.
En yoluyla almak için çalışalım belki iki, üç satır
ve sonra biz toplanır ve bu bitiririz.
>> Siz kaybolur eğer tamamen Tamam.
Bu gerçekten zor bir kavramdır.
Sizler sınıfta endişeli iseniz David dediğim gibi böyle gider,
öyle değil.
Biz ulaşıyoruz Zorluk kavramsal zirve
ve sonra gidiyor aşağı doğru eğimli olacak.
Yani siz neredeyse vardır.
Biz şeker bir sürü almak zorunda kamburu ile çocuklar.
Ben yıkılmasından sonra hemen hemen düşünüyorum Biz iyiye olacak kırmak
ve hayat tekrar iyi olacak.
Hiç yüzden hiçbir endişe.
Pekala.
Ben adamlar sana 20 veririm saniye daha fazla tamamlamayı.
TAMAM.
Pekala.
Şimdi bu bir bıçak atalım.
Siz gibi, bana cevap vermek Ben sadece bunları yazmak için gidiyorum.
Ve umarım biz-- I can?
Ben aslında bunu yazamazsınız.
Ben gemide çizmek gerekir.
>> Yani burada bu ilk satırında Biz b yıldız c eşittir var.
Ayrıca Elliot kadar getirdi Gerçekten, gerçekten iyi bir nokta.
Ben ek olarak bu unuttum çünkü iki yolu biz yıldız sembolünü kullanabilirsiniz,
Üçüncü yol, aslında var.
Çarpma.
Ve böylece sırf karışık alamadım Bu bir yıldız kullanarak ilk yoludur.
Sadece bilgisayar söylüyor Ben bir işaretçi oluşturmak için yaklaşık olduğumu.
>> Yaparak ikinci yolu işaretçinizin yıldız,
İstediğin işaretçi söyler Bu işaretçi de verilere erişmek için.
Sonra, tabii ki, orada sadece basit çarpma
İki sayı arasındaki söyleyen Ben iki çarpmak istiyorum.
Yani pek çok yolu var Biz yıldız sembolünü kullanabilirsiniz.
Karışık alamadım.
Sadece siz anladığınızdan emin olun tam olarak ne üçü
yapıyoruz.
>> Bu ilk satırda Yani a b c süreleri eşittir.
Öyleyse üzerinden gidelim neler a, c nedir, b nedir nedir?
Ve bir gösterici, ne b gösterici ve c işaretçi?
Eşit olanlar hepsi nelerdir?
TAMAM.
>> Bir 3 eşittir Yani biz başlamak, b 4 eşittir ve c sağ, 5 eşittir?
Can, ilk satırdan sonra Yani Biri ne olduğunu söyle?
Evet.
Sadece cevapları haykırmak için çekinmeyin.
20.
İyi.
B nedir?
>> İZLEYİCİ: 4.
ANDI PENG: c nedir?
İZLEYİCİ: 5.
ANDI PENG: Yay.
İyi.
Pa, pb ve pc nelerdir?
>> HEDEF KİTLE: 000001 ve 002?
ANDI PENG: Evet.
Bir hile soru Yani tür ama gerçekten burada çünkü
Gerçek anıları dışarı çekti.
Fakat, çünkü örneğin biz değiliz aslında bu sayılar ne olduğunu biliyorum,
biz sadece işareti söyleyebiliriz.
Ben bile bilmiyorum ben bir ve işareti çizebilirsiniz.
Bu da-- var bunu nasıl yapıyorsun?
>> HEDEF KİTLE: Bir sekiz çizim gibi.
>> ANDI PENG: Bir sekiz gibi.
Bunun gibi.
TAMAM.
HEDEF KİTLE: Bingo.
>> ANDI PENG: it Killing.
Yani bir ve imi, sadece bunu yapabilirsiniz.
Biz aslında çünkü bakım şey bu değeri
ve bazı uzunluğunda eşek değeri neyse,
biz sadece giong kullanıyorsanız işareti a söyleyecek.
Sonra pb ne?
HEDEF KİTLE: [duyulamaz].
ANDI PENG: Evet.
Güzel.
Pekala.
Kolay ilk satırı.
Biz bu var.
İşaretçiler kolaydır.
Tamam.
>> İkinci çizgi.
Ve böylece yıldızı eşittir aynıdır Bir söyleyerek şey kez c eşittir.
Bu yazı sadece kolay bir yolu var.
Yani biz yapmaya çalışmıyoruz Bir nokta ya da burada herhangi bir şey.
Yani ilk satır ile yapılır.
İkinci satırda nedir sonra bir bir kere c eşittir do?
>> HEDEF KİTLE: 100?
ANDI PENG: 100 var.
İyi.
Nasıl b hakkında?
>> HEDEF KİTLE: [duyulamaz].
>> ANDI PENG: Nasıl c dersiniz?
>> HEDEF KİTLE: [duyulamaz].
>> ANDI PENG: Ve nasıl işaretçiler dersiniz?
Doğru, aynı onlar-- mısınız?
TAMAM.
Şimdi üçüncü satır.
Biraz yanıltıcıdır.
b yıldızı pa eşittir.
Birisi ilk bana söyleyebilir, Ne yıldız pa eşit mi?
>> HEDEF KİTLE: Bu değer bir de depolanır.
ANDI PENG: Kesinlikle.
Ve değeri nedir bir de depolanır?
>> İZLEYİCİ: 100.
>> ANDI PENG: Tamam.
Yani sonra ne olurdu kod bu hat yürütme?
>> HEDEF KİTLE: [duyulamaz].
>> ANDI PENG: b ne olacak?
>> İZLEYİCİ: 100.
>> ANDI PENG: Evet.
Ve sonra her şey olduğu hemen hemen değişmeden, değil mi?
Biz bunu dokunmadı çünkü.
Güzel.
Dördüncü hat.
Biraz daha karmaşık.
Yani pc-- bir kez daha, pc göstericisidir O pa eşittir C- işaret etti.
Bir Nedir?
>> İZLEYİCİ: 100.
ANDI PENG: b nedir?
İZLEYİCİ: 100.
ANDI PENG: c nedir?
İZLEYİCİ: 5.
ANDI PENG: pa nedir?
HEDEF KİTLE: Bir ve işareti.
ANDI PENG: pb?
HEDEF KİTLE: Ampersand, b.
ANDI PENG: Ve zor, pc şimdi nedir?
HEDEF KİTLE: Bir ve işareti.
ANDI PENG: Yay.
Woo hoo.
Siz gördünüz mü?
Bu, tüm haklı.
Çok kötü değil.
Hepsi değilse biz daha şeker var Doğru, ama hepsi doğru olduğunu düşünüyorum.
Ve biz sadece bir gitmek için gidiyoruz biz zor olanları vurmak önce daha fazla.
Cevaplar Buraya var.
>> Esasen, bu olduğunu biliyorum Sadece bu noktada matematik gibi.
Eğer gibi basit denklemler varsa artı b, bir kere c yapmak kolaydır.
Ve üzerine genişleyen başladığınızda o, sadece işlemlerin sırasını gidin.
Önce aynı şey.
>> Takip ve eğer tutun senin Yıldız şey öncedir.
Bu size değer söyler.
Eğer bir ve daha önce varsa bir şey, size adresini söyler.
Ve atamak gerekir ya işaretçileri veya bu değer.
Yani bu aşkın gidelim Sonuncusu çabucak.
Değil bu sonuncusu, üzgünüm.
Aslında, siz seçebilirsiniz.
Hangisi siz gitmek istiyorsun Üç kalan out üzerinde
Sahip olduğumuz?
Ben sadece bunu yapabileceğimi sanmıyorum Biz sadece hat atlamak olamaz çünkü.
TAMAM.
Sizler, bir seçeneğimiz yok bir son sadece üçte biri.
>> Yıldız pc b kez c eşittir.
>> HEDEF KİTLE: Yıldız pb?
>> HEDEF KİTLE: Yıldız pb.
ANDI PENG: Üzgünüm?
HEDEF KİTLE: Yıldız pb.
ANDI PENG: Yıldız pb.
Ah, benim hatam.
Yıldız pb b kez c eşittir.
Ben adamlar sana 10 saniye vereceğim.
Sadece çabuk düşünüyorum.
Bu biz çok olması uzak ne biz sonra ne olur
Oradaki beşinci satırı çalıştırmak?
TAMAM.
Bir Nedir?
>> İZLEYİCİ: 100.
>> ANDI'nin PENG: 100.
B şimdi ne?
>> HEDEF KİTLE: 500.
>> ANDI PENG: İyi.
Biri açıklamak isteyen var mı Bana 500 bu yüzden?
Ben biz do not feel like aslında hiç b dokundu.
Nasıl değiştirmeye başardınız b dokunmadan b değeri var mı?
Evet?
>> HEDEF KİTLE: Çünkü yıldız pb pb-- de değer anlamına gelir
ANDI PENG: Kesinlikle.
HEDEF KİTLE: --which b.
ANDI PENG: Kesinlikle.
Yani burada bizim şemada, bizim işaretçi pb aslında bu hakkın işaret
Burada, burada gerçek fiziksel b.
Ve böylece gidip eğer Eğer yıldız pb yapmak, işte
işaretçinizin senin ok takip ve fiziksel olarak b değerini değiştirerek.
Yani biz değişti oda neden var Aslında b dokunmadan 500.
Ve sonra her şey kalır biz dokunmadı çünkü aynı.
O b öyle.
Güzel.
Ve daha sonra--
>> İZLEYİCİ: Ben sadece bir sorum var.
>> ANDI PENG: Evet?
>> HEDEF KİTLE: beri we've-- işareti c artık yok,
O işareti a demek Şimdi aynı şey yönlendirme?
>> ANDI PENG: Evet.
Yani--
HEDEF KİTLE: Yani ok tür sadece ve- hamle
ANDI'nin PENG: Böylece essentially--
İZLEYİCİ: Biz access-- olamaz --now
ANDI PENG: --when biz I kalpazanın on-- dereference c.
Neydi o?
Üçüncü satır?
Dördüncü.
Dördüncü hat.
Yaptığımız Tüm esasen oldu Bu ok değiştirmek
ve bir yerine doğru işaret var.
>> HEDEF KİTLE: Yani biz artık c erişemiyor.
>> ANDI PENG: Bu olsaydı kesin sayı, bunu erişebilir.
Ama hayır.
Biz bir işaretçi yok Artık c bakacak.
Eğer isteseydim sanırım size bunu yeniden erişim
Başka yaratacak c-işaret yeniden işaretçi
veya bu yönlendiricide başvuru yapıldı ve geri çekti.
Yani, hayır, olduğu gibi şu anda, üç işaretçileri, bunların hiçbiri c etmektedir.
>> Herkes iyi?
Cevaplar çevrimiçi.
Bölüm sonra, üzerine gitmek çekinmeyin Son iki test kendinizi.
Aynı kavramlar, sadece biraz yanıltıcıdır.
Sadece mantığıyla üzerinden takip neden şeyler farklı şeylerdir.
Ve ipucu, işaretçiler Sevdiğimiz bir konu
Onlar çünkü sınavlar hakkında kapsayacak şekilde kavramsal çok zor.
Bu yüzden sana öneririm adamlar bu grafiği gözden
veya benzer kavramlar için yırtmaç Bu sınav öncesinde önümüzdeki hafta.
>> HEDEF KİTLE: Afedersin.
>> ANDI PENG: Evet?
HEDEF KİTLE: [duyulamaz] Nihai Şehre [duyulamaz].
>> ANDI PENG: 50,000?
Ben aşağı geri takip etmek gerekir.
Ama çizgiyi düşünüyorum somewhere-- daha önce, dev c değeri yarattı.
c bu dev şeyi eşittir hangi 100 kez 500.
Hayır.
>> HEDEF KİTLE: [duyulamaz].
>> ANDI PENG: Evet.
10.000 100 kez 100.
Hangi 10.000 olduğunu.
Yani geri aşağı orada sen b ve c çarparak.
B-- işaret işaretçi Yani 500-- kez değeri, bir bir--
>> HEDEF KİTLE: [duyulamaz].
ANDI PENG: Belki yanlış.
HEDEF KİTLE: Hayır, hayır, öyle değil. [Duyulamaz] c ibre artık bir- işaret olduğunu
ANDI PENG: Evet.
O haklı.
>> HEDEF KİTLE: --O bir eşittir de onun en bulunuyor Bir times-- o c değerdir.
ANDI PENG: Biraz diyebilir miyiz biraz daha yüksek sesle, böylece herkes sizi duyabiliyor musun?
HEDEF KİTLE: c Yani işaretçi şimdi işaret a işaretçi işaret için kullanılan ne
aşağıdaki amaçlara hala does-- ama işaret Doğru, bir olan aynı şey?
Değeri Ancak o yeni tanımlanan oldu.
Ve bunun başında sen Önceden 100 kat olduğunu söyleyerek
500 b değer.
Ve böylece ne kadar olduğunu var.
50,000.
Onlar bu yeniden atama şeyin c hafıza alanı c işaretçi bu--
Bir olduğu işaret ediyor.
Yani 50.000 olmak için yeniden tanımlayan ediyoruz.
ANDI PENG: O olabilir Benim için bölüm öğretmek.
Bir dahaki sefere hepsi senin.
İşte.
İşte bunun için daha fazla şeker var.
Bunun için şeker hak ediyor.
>> İZLEYİCİ: Neredeyse o yakalandı.
>> ANDI PENG: Neredeyse o yakalandı.
Her şey yolunda.
Evet.
Ama tam olarak doğru idi.
Yani yapman gerekeni Ben biz düşünüyorum ki- olduğunu
gerçeği takip etmek zorunda işaretçileri şimdi ki
farklı değerlere işaret.
Yani value-- üzgünüm, c işaretçi için repointed.
Ve böylece bizim sayıların tüm kaymıştır söyledi.
Erişmek Ve o, bu yüzden değeri farklı, orada saklanır.
bu mantıklı mı?
TAMAM.
Güzel.
İyi Herkes, ben geçmeden önce?
>> HEDEF KİTLE: Gittiğin zaman Şeyin mu Sol sütundaki satır aşağı
ilk satır, ikinci satır etkiler ve daha sonra gibi, Bay Kane saniyedir-- var:
ANDI PENG: Evet.
Bu yüzden ben sadece yazdığınız kodu hayal a b c kez eşittir içinde, bir yıldız c eşittir.
Sadece ben var olduğunu hayal Sadece bu kodu koştum
ve ben çıktısını vermedi neler Bunların hepsi oldu.
Ben olsaydım, sadece ilk yazdırmak için üstündeki şey, burada olurdu.
Ben tüm koştum sonra ise kod bu satırları,
Ne bu değerler olmalıdır sonunda olmak vardır.
>> Yani aslında burada bir program yazdık.
Ben tüm yapmadım çarpma.
Ama sadece hayal.
Yani burada sadece var Program işaretçileri aradı.
Ben Tamam guys-- eğer yakınlaştırmak için gidiyorum.
Yani değişkenleri a, b ve c oluşturduk.
Ben onları eşit kurdum 3, 4 ve 5 ve ettik
karşılık gelen işaretçi hazırlandı.
Ve sonra burada ben sadece gidiyorum Bunun ne olduğunu yazdırmak için.
Bu yüzden bana bu çalıştırın.
>> Size adamların see-- bok yapın.
Siz nasıl görüyor musunuz, b ve c bu değerleri
ama onların işaretçileri bu dev vardır biz umurumda değil o çöp değeri var mı?
Yani aslında fiş olsaydı Bütün çoğalması
ve daha sonra, tüm yeniden yazdırmak Bu, o dışarı yürütülür
Bu alt kısmında ne.
Siz oynamak istiyorsanız Yani aslında fiziksel kodlama ile,
siz sadece bu bütün takabilirsiniz.
Kod Online ve sonra sizin yanınızdaki olacak değerler sonradan buna basılması gerekir.
>> Ve sonra nasıl işaretçi göreceksiniz adresler aslında yeniden oylandı.
Peki nasıl göreceksiniz c adresi aslında olur
Bir adresi ne olursa olsun eşit.
Ve onlar maç olacak ne olursa olsun Bu büyük bir sayıdır.
İyi soru.
Herkes iyi mi?
Sorularınız için son bir çağrı.
TAMAM.
Pekala.
Yani aklını sahip hazırlamak şişmiş biraz daha ısırdı.
Diziler aslında sadece noktalar şunlardır.
Yani hepsi burada.
Ve dizeleri nelerdir, hatırladın mı?
Onlar da diziler konum.
Peki dizeleri aslında nelerdir?
Onlar işaretçiler gibisin Daha fazla karakter bir char başında.
>> Yani başlangıç ​​sadece kavramları var birbirinin üstüne inşa etmek.
Yani neden-- sensin derste hatırlıyorum, David,
O karşılaştırma vardı int dize anne
sonra bir şey ve bir Başka bir dize anne ve
birbirlerine iki eşit çalışın, onlar size farklı değerler verir.
It dizeleri nedeniyle kendileri değerler değildir.
Onlar tüm bellek adresleri vardır char-- Onlar karakter ve dizilerin diziler
Sadece değineği vardır.
>> Böylece, esas olarak, ne zaman David comparing-- oldu
Ben tüm bu silmek Tamam olur?
Yani David derste zaman vardı anne, anne eşittir
Bize aynı şey gibi görünüyor.
Sağ?
Ama, altında bilgisayar davlumbaz, aslında ne oluyor
bu dizedir Tüm bu olan bir dizidir.
Bir ampersand-- veya, üzgünüm, sonunda boş terminatör ile.
Sağ?
Backslash 0.
Yanlış ters eğik çizgi.
>> Böylece tüm hepsi were-- Bu iki şeritler were--
boyut ayak dizi ile vardır anne ve anne mektupları.
Ama ne diziler gerçekten sadece vardır bellekte belirli bir yere işaretçileri
Bu sizin diziyi başlatmak için söyler.
Yani bu durumda, bütün bu oldu sadece bazı çöp değeri oldu
bazı rasgele işaretçi.
Ve tüm bu oldu diğer bazı çöp değer.
Sadece 0x200 diyelim.
>> Ve böylece eşit çalıştığınızda Onları birbirine iki,
Onlar yüzünden yanlış olarak değerlendirmek işaretçiler addresses--
bunlar were-- farklı idi.
Sen eğer farklı Oysa Gerçek tamsayılar karşılaştırmak için çalışıyor.
Eğer compare-- istedim gibi Son example-- int a içinde b,
Onlar değerlendirirsiniz true Elliot dediği gibi
onlar için saklandı tamsayı
ve sadece değerlerini değerlendirmek ediyoruz.
Burada, çünkü dizeleri diziler ve tüm diziler işaretçiler vardır
onlar değil bu yüzden birbirine eşit.
>> Yani bir tür, bu grafik kafa karıştırıcı.
Ama sadece hayal edelim.
Biz boyutta bir dizi oluşturmak ettik 2-- 0, 0 ila indeksi 3,
1 değerleri ile 1, 2, 2 ve 3 tanesi saklanır.
Tüm dizi gerçekten şimdi sadece burada does--
Ben bir işaretçi oluştururken söylüyorlar olduğunu diziye
En değer erişme Bu dizinin ilk endeks.
Yani burada 0 olurdu.
Sağ?
Herkes nasıl anladı mı İlk satır değerlendirdi mi?
Büyük.
>> Ve böylece başlatmak istedim Bundan sonra ilave değerler,
hepimiz yeniden atama olduğunu yapıyoruz.
Bu yüzden, 0, 1, 2, 1.
Böylece bir kez bu işaretçi olduğunu Burada işaret, hepimiz yapıyoruz
aşağı hareket ediyor.
Yani artı 1 ne yapıyor.
Ve sonra biz orada 2 koyabilirsiniz.
Biz birinde 3 koymak isteseydi sonra biz bu işaretçi silmek istiyorum
Orada 3 koydu.
Bu mantıklı herkes yapar?
Evet.
Bir soru var mıydı?
HEDEF KİTLE: Bu [duyulamaz] var var Bir soru, ben yine de söyleyeceğim.
Ben aslında bir olduğunu sanmıyorum İngilizce ama- soru, dizi
eşittir 1 mantıklı.
Biz, tamam, gibi ilk şeysin.
Ama işler 0 endeksi vardır [Duyulamaz] dizi 0 eşittir
İlk noktayı gösterir.
ANDI PENG: Evet.
Yani aslında ne ben burada yapıyorum olduğunu Ben ilk indeksi erişen değilim.
Tüm ben, bu yüzden her şeyden önce doing-- oldu Yıldız dizisi ne yapar söyle?
Bir işaretçi önce bir yıldız ne yapar?
>> HEDEF KİTLE: Bir işaretçi belirtir.
Yani bir işaretçi ilan ediyoruz.
Bu de--
>> ANDI'nin PENG: Bu, hangi araç dereferences gider ve aslında değerini alır.
Sağ?
Bu durumda Yani, almak istiyorum değer burada ve 1 olarak ayarlanmış.
Evet?
Yani bilmiyorum actually-- değilim Gerçekten bu endeksine umurumda,
Ben yapıyorum hepsi sadece aşağı yineleme olduğunu dizinin aşağı benim işaretçi hareket ettirerek.
Ve sonra sonunda ben Doğru, bunu durdurmak zorunda?
Ve ben durdurmak yolu Ben vurduğunuzda durumda olduğunu
bir dize, bir boş sonlandırıcı.
Ben görürsem ben back-- vurursan ben, oh, biliyorum Ters eğik çizgi 0, ben bu konuda bittim biliyorum
ve ben sadece can biliyorum yineleme durdurmak.
Gerçekten iyi bir soru.
>> Ve biz gerçekten uzak gidersiniz Bu önümüzdeki hafta derinlemesine
Çünkü gidiyor parça işaretçileri kullanımı bir sürü gerektirir.
Ama şimdi biliyorum, Bu sadece farklı more-- var:
Bunun için sadece farklı bir yolu Bilgisayar, esasen, yazma
Biz ne yapıyoruz oldum.
David de dediği gibi , yol ders biz
bir dizi yaparak sadece erişmek Dizi 0, dirsek 0, biz eğer sadece
İlk değer erişmek istiyordu.
>> Tüm bilgisayar dönüyor yapıyor İçine ve kendini yineleme söyledi.
Bu yüzden sözdizimsel diyoruz Sadece bir şeker
Kullanıcı dostu söyleyerek bir fantezi yolu programlama bilmeden bizi yolları.
Ama bilgisayar altında, ne yapıyor,
aslında sadece geçiriyor ayar var bir işaretçi.
Ama biz bunu yazmak yol, Bizim için kolay, çünkü
açısından şeyleri düşünmek kutuları ve kutuları aşağı taşımak için nasıl
parantez olan gereğidir.
Maalesef, bu, gerçekten Gerçekten kötü evet ama-.
Nasıl Yani olacaktır: İZLEYİCİ İki dizeleri karşılaştırmak
birbirlerine eşit olup olmadığınızı görmek için?
>> ANDI PENG: Böylece Davut yazdı konuşmasında bu program
bu yüzden sadece gidiyorum hızlı ve kısaca bitti.
Bunu yapacağını yolu Bu aslında olur ise
gidin ve karşılaştırmak gerekir addresses-- veya değerler
işaretçiler elde.
Peki nasıl yapmak hatırlıyorum Burada değerini elde?
Burada adrese umurumda değil.
Aslında nasıl alabilirim ne olursa olsun değeri burada?
>> HEDEF KİTLE: [duyulamaz].
>> ANDI PENG: Kesinlikle.
Yani yıldız karşılaştırmak Burada burada yıldızı karşı.
O eşittir.
Ve sonra aşağı gitmek.
Burada yıldız ve Burada eşit yıldız?
TAMAM.
Onlar eşitiz.
Ve sen sadece aşağı inmeye devam Her iki sonuna isabet ettik kadar.
Ve hepsi o, eşitse Eğer dize eşit olduğunu biliyorum.
Ve C aslında sahip bir işlevi çağrılır yazılı
Dize Zorunlu olan aslında sadece dont nedenle 'sizin için yapar
Kendiniz yazmak zorunda.
Evet?
>> İZLEYİCİ: Ben derste düşünüyorum Biz karşılaştırmak ne zaman olduğunu.
Biz gerçekten ihtiyacımız yok pi gibi sayaç, değil mi?
>> ANDI PENG: Sen değil biz gerçekten umurumda değil, çünkü
kaç kutu biz aracılığıyla iterated ettik.
Biz umurumda hepimiz gidiyoruz olduğunu Ben durdurmak için öğrenene kadar devam edin.
Ve ne zaman durmak bilmiyor gösterge çeşit var
Eğer boş bir sonlandırıcı konum olduğunu.
Evet.
Yani--
HEDEF KİTLE: [duyulamaz].
ANDI PENG: Evet.
Karşılaştırılması durumunda Yani dizeleri, gerçekten yok
Kaç harf bakım Ben karşılaştırmak gerekir mudur
onlar doğru veya false iseniz birbirlerine eşitiz.
Kaç harf umurumda değil Bunların her biri, iyi misin?
Ben sadece bu umurumda Bu ve biriyle eşleşir
kibrit ve bir sonra sonra Sonuna kadar tüm yol eşleşir.
Sağ?
bu mantıklı mı?
>> Yani gerçekten, kaç harf umurumda değil Ben sadece umurumda tüm harfleri olduğunu
maç.
Evet.
TAMAM.
Ben bundan on taşıyabilir miyim?
Büyük.
Biz kısa biraz azalıyor Zaman yüzden sadece seni izin gidiyorum
Çocuklar kısaca bu bakmak için.
Kimliğinizi eğer içine Run Siz merak ediyoruz.
Ve siz ne görüyorsun Bu yazdırarak edilecektir.
TAMAM.
>> Biz de değinmek gerekir Yani bir şey Bit işareti aritmetik fikirdir.
Hangi o tüm bir yerine ayarlama daha
saklanan ne değerleri işaretçinizin adreste
Sadece gerçekten değişiyor adres kendisi.
Insan istediği gibi Yani eğer el işaretçi ayarlamak için,
Bunu yapacağını yolu sadece bir işaretçi n katı büyüklüğünde yapmak.
Sağ?
>> Yani bir int.
Bir int-- kaç bayt bellekte bir int nedir?
Bu doğru, dört değil mi?
Biliyorum Yani eğer ben bütün bir dizi var ints ve bunu birine işaret etmek istiyorum
sonradan, ben sadece var bilirdiniz Doğru, dört bayt benim işaretçi aşağı inmek?
Ve böylece n kat boyutu işaretçi bayt
Ancak birçok bayt sadece sensin tarafından işaretçiyi aşağı taşımak için gidiyor.
>> Yani, örneğin, biz bir dizi varsa ints, ilki, diyelim
0x00 olarak depolanır.
Sen bir sonraki de olacak biliyorum 0x04 o dört bayt sonra çünkü.
Ve bundan sonra bir gidiyor 0x08 ve benzeri ve benzeri olacak.
Ve böylece, çocuklar, bir göz atın.
>> Burada yapıyoruz tek şey Eğer bir işaretçi y var
ve bu ekliyoruz senin Bellek aşağı hareket böylece
hafıza blokları tahsis edilmiştir.
Daha yüksek bir seviyeye kavramının tür.
Siz ihtiyacınız olmayacak Bu hafta için bilmek,
ama bu orada aşağı yapıyor hepsi bu.
TAMAM.
>> Başka bir şaka zamanı.
İki dizeleri bir bara girer.
Bir Ben Bir rom istiyorum, diyor Kok çöp değerleri.
Diğer sen mazur gerekecek diyor arkadaşım, o boş sonlandırılmış değil.
Siz olsun.
Özür dilerim.
Bu benim kendimi tutmak nasıl Ben bölüm için hazırlık yaparken gidiyor
Ben bir kaç şaka slaytlar eklemek olduğunu.
Neyse.
TAMAM.
Ben on-- taşınmadan önce Böylece, esas olarak, biz ettik
kapsanan tüm kavramsal işaretçileri ile ilgili konular.
Ve sonra biz hareketli talk-- gidiyoruz Bu neden önemli hakkında daha fazla konuşmak
ve bu sığar nasıl bellek yönetimi fikir.
Ama geçmeden önce, Herkes soruları var mı
işaretçi kullanımı hakkında, neler oluyor Eğer işaretçileri oluştururken üzerinde,
nasıl her başvuran Diğer, nasıl dereferencing var?
Hakkında herhangi bir sorunuz Ben geçmeden önce böyle?
TAMAM.
Büyük.
>> Yani bu bize getiriyor Daha büyük üst düzey kavramı
Bir bütün olarak bellek yönetimi.
Bu nedenle, esas itibarıyla içinde Bilgisayarınız var
belleğin iki temel tipi veya Bellek bölgeler saklanır.
Sen ne denir burada var yığın ve buraya sahip
Ne yığın denir.
Ve biz hakkında konuşmak için gidiyoruz Yığın ilk olarak, çünkü
daha finagley biri size tür kavramsal var
Neler anlıyorum.
>> Böylece tüm yığın düşün bu-- bu bellek fiziksel yığını olarak
Eğer bir bellek bloğu var burada senin program için bir kenara oluyor
çalışır durumdayken.
Ve bu tüm esas, nerede Yerel değişkenler saklanır.
Yani bu sadece bir yakınlaştırılmış Bu yığının resimde.
Orada yığını, ben sadece biraz daha yakınlaştırma.
>> Yani, temelde, bir yığın var Programda fonksiyonu bir demet.
Yani sadece geri gidelim hafta iki örnek
bizim ana işlevi vardı nerede bir de küp fonksiyonu olarak
Biz bir işlevi oluşturmak için çalıştı nerede giriş olarak parametreleri aldı cubed--,
Onları cubed ve iade Onları geri ana kadar.
Yani bu böyle bellekte depolanır Eğer ana işleve sahip olduğunu
Burada altta.
Sonra her bir ilave fonksiyonu ile Bu çağrı ve bunun üzerine ekleyin,
Bellek sadece üstüne dizer.
Fiziksel yığını olarak düşünün.
>> Ve böylece hepiniz ana var ana fonksiyonların değişkenler,
Burada oluyor her şey, saklı.
Ve sonra çağrıldığında küp, gider ve
Tüm bu kopyalarını oluşturur Parametreler ve bunları saklar
farklı bir yerde, yukarıda.
Ve böylece neden ilgilendiriyor?
Biz bakım nedeni biz sadece can not olduğunu kullanmak parametreleri değişkenleri var--
burada-- ve biz bekliyoruz, onları değiştirmek Onları da doğru, burada değiştirilecek?
>> Fikir onlar kurtardı konum olduğunu bellekteki farklı yerlerde
bu nedenle, bu farklı erişen yaparken fonksiyonlar, sen oluyor ne düşündüğünüzü
Aslında çünkü olmuyor bellek bitleri birbirine değildir.
Ve bu yüzden gerçekten bir soru olduğunu Bize biraz anlamak için önemli
, ne biz koşuyoruz zaman, eğer Bir program, bir fonksiyonun boyutu
yani fiziksel olarak nasıl frame-- yığını kadar bellek biz vermek zorunda mı?
Belki de dev bir fonksiyon yüzden var bunu bu kadar bellek vermek zorunda.
Daha küçük olsaydı ama biz çok zevkli olur minik biraz gerekir.
>> Yani fikir, biz koşuyoruz zaman olduğunu Bir program bu işlev boyutu
Kaç bağlıdır değişkenler ve değişkenlerin tipi
biz bunu vermek istiyorum.
Ama ne numarası varsa variables-- ve boyutları,
bu kararlı var sizin tarafınızdan kodlayıcı ama
Gerçek belirlenir Programınızın kullanıcı.
Ben bir işlevi oluşturmak istedim Yani eğer Bu, kullanıcının dizeleri aldı
ama aslında ne kadar büyük bilmiyorum Bu dizeler benim için zor vardır
Belirli tahsis etmek bellek miktarı gerekli.
Sağ?
>> Bu eğer function-- Çünkü eğer Bu kullanıcının dev dize girişleri,
bir hata oluşturmak için gidiyor esasen denir ne
Eğer ötesine taşma yığını nereye Sahip olduğunuz bellek sınırları.
Ve böylece o zaman ne yapacağız?
Biz sadece bu dev oluşturmak yapamıyorsanız her şeyin kaydedebilirsiniz yığını,
biz bu sorunu çözmek için ne yapmalıyım?
>> Yani biz ve konuşmak hareket edecek bellek, bu ikinci tür
ve sonra biz nasıl konuşabiliriz iki birlikte kullanabileceğiniz
Bu soruyu çözmek için.
Yani şimdi biz yukarı taşımak için gidiyoruz belleğin farklı bir parçası
Bizim bilgisayarda.
Bu yığın denir.
Böylece tüm yığın bir havuz olduğunu mevcut hafıza olduğunu
dinamik tahsis edilebilir.
Yani süre değiştirebilirsiniz Programınız çalışıyor.
>> Ve böylece bir bölge içinde O can kullanılmayan bellek
olabilir ki allowed-- olması fonksiyonu ile ayrılan
denilen malloc veya bellek ayırma.
Böylece, esas olarak, ne zaman Eğer bir program yapıyoruz
dinamik bellek oluşturabilirsiniz öbek ve burada tüm aşağı kullanın.
Ve işlevleri böylece daha sonra, tüm Burada öbek erişebilirsiniz.
>> Ve böylece malloc, bu fikir David Biraz çabuk, kısaca geçiştirilmiştir
derste için sadece bir yoludur Eğer hafıza kontrol etmek.
Gibi, ne zaman sadece oluştururken Sadece olduğunuzda, işlevleri yığını
ana işleve sahip Random işlevleri ile,
Eğer çocukları olarak onları düşünüyorum sadece Onlarla bitince kaçtı.
Onlar gerçekten kötü çocuklardı.
Onları, sizi oluşturmak Onlara bir şey öğretmek,
ve daha sonra istediğiniz zaman they tekrar erişmek
orada sizin yanınızdaki çünkü Bellek sadece kaçtı.
>> Ama malloc veya yığın, bir yoludur ve nerede daha iyi çocuk sahibi
ne tür oluşturabilirsiniz Onları, onlara değerleri atamak,
Gerçekten kulağa them-- kullanın İstediğin ancak bad-- bunları kullanmak,
ancak daha sonra kontrol edebilmek Onları ve daha sonra belleği boşaltmak
Bunları gerektiğinde.
Öyleyse sen işin bitince senin fonksiyonu, çocuklar sana gel
ve hala orada bu verileri var.
>> Yani biz malloc veya oluşturmak yolu, Hafıza fonksiyonu geçersiz yıldızı tarafından
bayt malloc boyutu.
Yani bu sadece prototip Biz bunu niçin.
Yani bir örnek bir işaretçi oluşturmak olduğunu int yıldızın pointer-- eşittir int-- yazın
int malloc boyutu.
Biz boyutunu yapmak neden nedeni So ve sadece bir number--
hepimiz biliyoruz, çünkü bir int dört bayt olduğunu
haklıydın-- ancak bir int sadece dört olduğunu Belirli işletim sistemlerinde bayt.
>> Bizim için fikri olarak programcılar biz o
kod oluşturmak için olabilir istiyorum , tüm bilgisayarlarda değil, sadece koşmak
bizim basit bilgisayarlar.
Biz kullanmak ister ve neden bu kadar işte büyüklüğü ve sadece dört numara.
Bu herkese mantıklı mı?
Böylece tüm of-- boyutu bir C işlev ya da operatör olduğunu
Hafıza yapar kaç bayt söyler değişkenin belli bir tip sürebilir.
Yani bu durumda, bir int boyutu dörttür.
Dört bayt.
Ve malloc serbest gidiyor senin yığın dört byte kadar,
sonra sonra main kullanabileceğiniz Fonksiyon hafızasını saklamak mümkün.
Herkes şimdiye kadar bu konuda açık mı?
Evet?
>> İZLEYİCİ: Ben açık değilim ama Sadece clear-- üzerinde olması
ANDI PENG: Tamam.
Tamamen iyi.
HEDEF KİTLE: --size taşımaktadır [duyulamaz] aslında can [duyulamaz]
ve aslında yapacak biz istiyoruz şey.
Bazı pseudocode değil.
>> ANDI PENG: Hayır
>> HEDEF KİTLE: Gerçek bir thing-- gibi
>> ANDI PENG: Bu gerçek bir koddur.
>> HEDEF KİTLE: --we kullanabilirsiniz.
Bu gerçek değil.
Güzel.
ANDI PENG: boyutu C. ile birlikte geliyor
HEDEF KİTLE: Bu benim hayatım mutlu yapar.
ANDI PENG: Evet.
Eğer tembel programcı iseniz Yani gibi Ben tür bazen duyuyorum,
Ben ezberlemeye sevmiyorum Bir int ne boyutu
Ben ezberlemeye sevmiyorum olduğunu float boyutuna olduğunu.
Sadece boyutu ne söyler o ve o çok daha kolay.
>> Pekala.
Yani önemli bir şey hepiniz istediğiniz
sen ne zaman akılda tutulması gereken malloc kullanarak her zaman olduğu
null olup olmadığını görmek için kontrol etmelisiniz.
Gibi Bu yüzden geri belirterek, öbek o resim.
Yığın sadece bu dev Eğer var bellek yığını.
Ve parçaları almak mümkün olmak istiyorum ve ondan bellek, doğru kullanmak?
>> Ama hayır ne varsa Bu yığın daha fazla bellek?
Ne Zaten bütün kullandıysanız ve bunun daha malloc deneyin?
Bu yok.
Sen niye Peki, bu bir hata alacaksın.
Sen hatayı seg gidiyoruz. Gidiyorsun nerede bir segment hataya sahip
var olmayan şeyleri erişmeye çalışın.
Ve böylece yol yapıyoruz Bu ve yol biz
biz kontrol olduğunu bilmek işaretçinin boş olmadığını görmek için.
>> Yani eğer bir şey malloc vardı ve ben, hiçbir fazla bellek vardı
çünkü bir hata basacaktır işaretçisi sadece null döndü.
Ve böylece şekilde biz bu-- do Bu, sadece büyük bir tasarım
Sadece bu-- herhangi bir ezberlemek zaman bir şey malloc çalışın,
size ihtiyacınız olacak null olup olmadığını görmek için kontrol edin.
Eğer denemek zaman Çünkü yığın bellek edinin
Her zaman yapmak zorunda Eğer bellek var olduğundan emin olun.
Yani hepsi bu.
>> Yani hemen hemen bu üç kod satırları, ezberlemek.
Her zaman malloc, onları plop.
Onlara ihtiyacımız olacak.
Ben size garanti Çünkü, biz gidiyoruz bir durumda ve bilgisayarınızda sizi sınamak için
sen çünkü patlayacak bu erişim belleği denemek için gidiyoruz
orada ve işler olacak çarpışma ve iyi olacak değil.
Dolayısıyla, sadece beynine o delin.
Malloc, boş.
İyi.
Pekala.
>> Sonra bu doğurur ne olur sorusu
biz bu bellek kullanarak bitirdiniz sonra.
Bütün fikre Çünkü Malloc sahip olduğu
biz alabilir bu yığın var bellek ve daha sonra bunu kullanabilirsiniz.
Sağ?
Ve sonra ne hatırlamak Biz onunla bitti, o sonra,
Biz o zaman ücretsiz yapabilirsiniz.
Bırak gitsin.
Biz gidelim olabilir.
Yoksa siz de kaçak gidiyoruz bellek ve daha kötü şeyler olacak.
>> Esasen, her Belleği dokunuyorsun,
kötü şeyler eğer olur doğru şeyler yapmazlar.
Yani ilk görmek için kontrol etmek zorunda, Eğer bellek varsa.
Bitirdiniz sonra Ve sonra, istediğiniz Onu özgür ve işletim sisteminizi izin
Onu geri almak için.
Bu yüzden bunu yolu sadece olduğunu işlevi, geçersiz özgür ve işaretçi
belleğin o yığın.
>> Yani örnek ücretsiz göstericidir.
Bu, basit, oldukça kolay unutmak istemiyorum.
Yani boş olup olmadığını ücretsiz bakın.
Herkes iyi?
Yani bir kez daha, kod, siz tür hızlı bir göz alabilir.
Ben yeni sözdizimi bir sürü biliyorum ve Eğer ah, gibisin eğer, tamam
yine ne anlama geliyor?
Endişe etme.
Bütün bu görüntülüyor olması gerekiyordu bir eylem, nasıl tüm bunları
birlikte kullanılabilir.
Yani bir araya getirildiği Geçmişte bir grup gibi
slaytlar biz sadece gitti aracılığıyla tek bir program halinde.
İZLEYİCİ: Bir anlamda Biz actually-- ki
ANDI'nin PENG: Bir anlamda bu biz aslında kullanabilirsiniz.
Sen, kimliği içine plop Bunu çalıştırabilir ve çalışmaya devam eder.
HEDEF KİTLE: Tamam.
Yani gerçek?
>> ANDI PENG: İşte gerçek.
Evet.
Ben öyle yapmayı deneyin fontlar çok farklı
Gerçek yazdığınızda o Kod yazı kodu
ve benim not kodu farklı olduğunu ancak Aslında çalışıp çalışmadığını bilmiyorum.
İZLEYİCİ: Hayır
Bence--
>> ANDI PENG: Tamam.
>> İZLEYİCİ: --sometimes [Duyulamaz] ve ben
gibi, bu gerçekten sevimli olurdu aslında kullanışlı bir şey olsaydı
ama sonra kullanılabilir bir şey değil.
Ben bu kullanışlı bir şey olduğu gibi.
>> ANDI PENG: Tamam.
Evet.
Ben birlikte bu geçmek gerekir.
David gibi ol, çocuklar gerçekten üzgün sahte kod yazarken.
Pekala.
Evet?
>> HEDEF KİTLE: Yani burada ptr aslında bir işaretçi değildir
o bir bellek blok?
>> ANDI PENG: Peki neden bahsediyorsun İlk satır veya aşağı burada bir?
Burada bu bir mi bahsediyorsun?
>> HEDEF KİTLE: ptr açmayız farklı şeyler
>> ANDI PENG: Peki, buraya bu yüzden Ne ben aslında doing-- ediyorum
Sadece buradan gidelim.
Bağların Bu tür içinde güzel kavramların hepsi.
Yani burada biz int yıldız ptr var.
Yani işaretçi int, o nerede biz aslında yaratıyoruz
tamsayı işaret eden bir işaretçi.
Peki, bu bir tam sayıya işaret gidiyor.
Ve biz malloc gidiyoruz, ya da konum vermek, yeterli bellek tahsis
arasında bir tamsayıyı depolamak.
Bu durumda Yani dört bayt.
>> Sonra bu null-- eşittir eşittir Biz yazdırmak için gidiyoruz null-- eşittir.
Ah, bir hata var, çünkü bellek bitti, değil mi?
Aksi takdirde geri on, sadece programı söyler
Bu bir hata var.
Ve sonra bunu yaparsanız bu, o belleğe sahip
olsun ne olursa olsun saklamak için gidiyoruz int konuma verir
ve işaretçi değeri olarak ayarlayın.
Yani aslında gidiyor fiziksel olarak bu değeri silmek
ve int getiri elde ne koydu.
Ve sonra gidiyoruz girdikleri her türlü baskı.
>> HEDEF KİTLE: Ve bu öbek olacak?
>> ANDI PENG: Bu gidiyor öbek için.
>> HEDEF KİTLE: Ve böylece erişilebilir olacaktır.
ANDI PENG: Kesinlikle.
Güzel.
İyi.
>> HEDEF KİTLE: Yani buna ptr serbest zaman Son adım, biz işaretçi azat edilir
ya da biz bloğu boşaltarak, değil mi?
ANDI PENG: Evet.
Bu yüzden pointer-- azat ettiğin iyi, bellek bloğu boşaltarak.
Yani tek yolu erişimi eşitlemek olabilir Bellek işaretçisi olan gereğidir.
Eğer işaretçi yoksa, sen Nerede olduğunu gibi, oh, bilmiyorum,
sağ?
Eğer özgür Yani, aslında konum O bütün bloğu boşaltarak.
Ardından bilgisayar oh, bilir, kullanılabilir bir şey, burada yok
Ben sadece çöp koyabilirsiniz değerleri tekrar içine tekrar.
>> HEDEF KİTLE: tamsayılar bu konuda biri yapmak So?
>> ANDI PENG: tamsayılar var mı?
Özür dilerim.
Eğer soru rephrase miyim?
HEDEF KİTLE: Eğer özgür sonra ben, demek pointer, olsun tamsayı,
hala var olacak?
>> ANDI PENG: Hayır, böyle olmaz.
Ya da en azından mevcut olacak senin bellek bilgisayar yok önce
onunla ne, ama var Senin için hiçbir şekilde o olsun.
İşaretçiyi serbest çünkü.
Artık nerede olduğunu bilmiyorum.
Evet.
>> Burada hareket edeceğim.
Vay be.
Yani biz kavramsal bir sürü bitti bellek yönetimi zorluklar
ve biz sadece gidiyoruz esasen geçirmek
Gidiş 5, 10 dakika sözdizimi şeye o
kullanışlı ve çocuklar için yararlı olacaktır, ama çok kavramsal orada hiçbir şey.
TAMAM.
>> Yani biz tamamen burada vites değiştiriyoruz.
Bellek yönetimi, zor. Göstericiler, zor. Evet.
Bu gerçekten zor, gerçekten.
Tamamen iyi.
Senin parçası olmasının nedeni budur gerçekten zor olacak.
Ama gidip yaparsanız Biz konum şeyler
yapmak gerekiyordu, yapmak Emin şeyler null
şeyler olup olmadığını kontrol etmek emin olun null, boş bellek emin olun,
Emin şeyler değildir yapmak sızıntı, iyi olacak.
Sen kurulacaktır.
Pekala.
Yani biz bu taşımak için gidiyoruz yönlendirme tamamen yeni bir konsept.
Ve şimdi önce biz ettik ana yol
ile etkileşim olmuştur bizim programlar standart giriş yoluyla
ve standart çıktı.
Sağ?
Kullanıcı girişi gibi şeyler ve bilgisayar
bize geri terminalde bunu tükürür.
>> Ama diğer vardır Bize etkileşim için yolları
ile bilgisayar ile bizim Sadece ben değil programlar
Fiziksel yazarak şeyler Ben istendiğinde olduğumda içinde.
Ve biz bunu yoludur daha büyük havuç aracılığıyla
ve boru sembolü.
Bu yüzden de okuyabilir ve Bu kullanarak dosyaları için yazıyorum.
>> Yani biz bunu yoludur büyük havuç yerine, bütün bu yapıyor
yazıyor ne olursa olsun sizin yanınızdaki Dosya ayrı bir dosya vardır.
Örneğin, eğer Yani merhaba dünya çalıştırmak istedi
ve ben çıktı istedim Başka bir dosyaya kaydedilebilir
ve sadece bana, ben dışarı yazdırılır Sadece havuç daha büyük yapabilir,
çýktý.txt.
Yani yapıyor tüm alarak Benim hello.world program
Çıktı ne olursa olsun ve bu var output.txt adlı bir dosyaya kaydetme.
Davut yaptım yol Öğrencilerin isimleri ile .csv,
o siz yapabilirsiniz aynıdır.
>> Ve özellikle bu yararlıdır Burada büyüktür
iki havuç daha büyük edemememden Bir çıkış ekleyebilirsiniz işaretler
Size demektir dosya, sadece bunun üzerine ekleyebilirsiniz.
Sadece eklemeye devam edebilirsiniz Her ek bir şey output.txt
Bu yaptığınızı.
Veya, daha biniyorlar başlatırsanız karmaşık programları iki büyük
havuç yerine, sadece yazdırır hata mesajları dışında.
Yani dev bir söylüyorlar hata iletileri miktarı
ve okumak istediğiniz Bunlardan ve hepiniz yoluyla
kaydırmak zorunda istemiyorum terminal yoluyla,
aslında sadece yapabilirsiniz output.txt daha büyük
ve kurtarmak için gidiyor senin hataları her
Bir dosya bu çýktý.txt adı Eğer geçmesi ve okuyabilirsiniz.
HEDEF KİTLE: metin dosyası kaydedilir?
ANDI PENG: Aynı kaydedilmişse senin program dizini.
Yani sadece geri dönmek ve bunun için bakmak.
Ve aynı şey giriş için yapabileceği bir
biz aslında alabilir Bazı dosyanın içeriği
ve biz girdi olabilir bizim programa söyledi.
Yani oldukça komutu yapmak zorunda daha Size fiziksel olarak bir satırı argümanları
şeyleri yazmak zorunda her zaman, sen
aslında sadece adında bir dosya olabilir Bu input.txt sadece tüm koyar.
>> Ve sonra boru nedeniyle özellikle serin bu bir program çıktısını alabilir
ve girdi olarak kullanmak Başka bir program.
Yani örneğin, çocuklar 'vigenere içinde, bu kod satırı olduğunu size
adamlar belki, belki sen misin çalışan gerçekten doing-- olduğunu bilmiyordum
Bu ./generate 1000 boru ./42.
Sağ?
>> Bu nedenle tüm yapıyor ki biz eğer sadece adım bu adımda bir göz atın,
./generate, ben olduğum anlamına benim program oluşturmak çalışıyor.
Bu onun girişinde 1.000 alıyor.
Yani rastgele 1.000 oluşturmak istiyorum sayılar ve ben boruya gidiyorum ki-
ya da ben ki- çıkış kullanmak için gidiyorum bulmak denilen benim program için girdi olarak.
Ve ben dışarı 42 bulmaya gidiyorum Bu 1,000 ila oluşturduğu rakamlar
sayılar.
Kod bu çizginin yapar mı herkese duygusu?
>> Bu şekilde biz tasarruf ediyoruz Yani kendimizi adımlar bir ton.
Biz üretmek çalıştırmak zorunda değilsiniz, kaydetmek Dosya ve ardından bulmak koydu.
Biz bir satırda her şeyi sadece olabilir.
Yani, ne olursa olsun çıktısı üretmek bulmak için hemen geri plop.
Evet?
>> HEDEF KİTLE: Ve komuta açısından işte ki- satırı argümanları olduğunu
Üç komut satırı argümanları?
Bu, herhangi bir find--, dört-- oluşturmak var: , 1,000 bulmak ve 42 üretmek?
Ya Şeyin olduğunu
ANDI PENG: Boru yapar Yani gerçekten Bir komut satırı argümanı olarak saymak
derleyici nedeniyle veya Terminal o boruyu bilir,
oh, ben önce bakmak gerektiğini biliyoruz çünkü boru benim çıkış var
ve ben bakmak gerekir Boru bu benim girdi çünkü.
Yani ki- bilir ./generate ve 1000,
Bu iki komut daha sonra argümanlar vardır İlk program için.
Ve sonra ./find 42 iki komut vardır İkinci program için satırı argümanları.
Evet.
Herkes bu konuda iyi?
>> Yani sadece gerçek hızlı, olanı yapmak Bu kod üç satır mı?
Oldukça basit.
Herkes bana söylemek istiyorum İlk satır ne?
HEDEF KİTLE: [duyulamaz].
>> ANDI PENG: sadece-- olarak düşünün daha fazla havuç ne yapıyor?
>> HEDEF KİTLE: Bir şey koyar Bir sonraki hattına.
ANDI PENG: Peki nedir Bunun tersi?
HEDEF KİTLE: Bir sonraki koyar İlk şeyin içine bir şey.
ANDI PENG: Evet.
Yani yapıyor tüm sen olduğunu Bir program çalıştıran .hello--
merhaba adlı bir programı çalıştırıyorsunuz.
Bunu vermek için gidiyoruz Bir giriş input.txt adı.
Sağ?
Çünkü o kadar sadece düşünmek fiziksel merhaba girecek.
Ve sonra kurtarmak için gidiyoruz Bir dosyada çıktı çýktý.txt çağırdı.
Nasıl ikinci satırında ne dersiniz?
Bana söylemek istediğin şey İkinci satır yapar?
HEDEF KİTLE: [duyulamaz].
ANDI PENG: Üzgünüm.
Tekrar söyle.
Elliot.
>> HEDEF KİTLE: Bu koyar Yani find içine numaraların listesi.
>> ANDI PENG: Evet.
Yani içinde, hatırlıyorum, bulmak Sipariş seni bulmak çalıştırmak için
Eğer aradığınız nerede olduğunu bilmek gerekir.
Ve bu yapıyor bu yüzden tüm bu burada size veriyor olması
önceden ayarlanmış İşlevsiz bir sayılar, o zaman gidiyor bulabilirsiniz
42 sayısı için bu arama.
Sonra 15.
Unutmayın, siz koştu bu ne zaman kodu test.
Şimdi bunu yaptığını anlamak mı?
>> HEDEF KİTLE: Bu koyarak oluyor Talimatlar seti
Bir üçe aracılığıyla [duyulamaz] için Üç Şeyin oyunu kazanmak için olsun.
>> ANDI PENG: Evet.
>> HEDEF KİTLE: Bu, bu girişler Programa talimatlar.
>> ANDI PENG: Oldukça fazla.
Yani tilde CS50. / Pset3 / 3x3, bütün bu yaptığını biz metni oluşturdu oldu
vardı dosyası, tüm Sizin için hazır başlıklar.
Oyun oynamak için Ve böylece, sadece-- Biz sadece sizin programa koymak.
Yani biz yarattığı bu Yönetim Kurulu ve sonra biz konum
Programınızın içine tahta koyarak işte bu koştu ve üç bir kiremit yarattı
üçe.
Yani yapıyordu hepsi bu.
>> Ve böylece aslında sihirli oldu perde arkasında oluyor
Siz olmadıkları Biz programlanan programı.
Ama şimdi siz neden anlamak böylece tüm iyi yaptım.
Pekala.
>> Yönlendirme çok iken Yani yararlıdır, Cı genel bir mekanizmaya sahip
okuma ve yazma için kendi dosyaları.
Hiçbir şey kavramsal Ben bu yüzden burada zor
sadece aracılığıyla gidecek Gerçekten, gerçekten hızlı.
O Bütün bazı ezber olduğunu ve emin adamlar yapıyor
sözdizimsel doğru kullanıyor.
Biz yapardım yoludur dosyası için bir başvuru oluşturun,
biz sonra biz dosyasını açın ve istediğiniz tüm okuma ve yazma yapacağını
ve sonra da dosyayı kapatın.
Ne zaman bir şey siz akılda tutulması gereken İstediğiniz
Çünkü, bunu yaparken o biz kapanış ve dosyaları açılıyor
Bu komutların tüm dahildir Standart standard-- I / O
kütüphane.
Yani sen ne zaman emin olun Eğer included-- ettik Bunu yaparken
Standart I / O nokta h included-- #.
>> Hızlı bir şekilde gerçek.
Birinci adım, oluşturmak istediğiniz o dosyaya bir başvuru.
Ve biz bitti işaretçileri ettik şimdi, sen adamlar bana ne söyleyebilirim kod satırı o
yapıyor.
Sağ?
Bir yaratıyor yapıyor Tüm bu işaretçi tipi dosyasının dosya adını vermiştir.
Eğer gidiyor biliyorum çünkü Bir dosyaya işaret ve sen kadar
Dosyayı açmak için gidiyorum.
Sonra f open-- her şeysin bu dosyayı açmak etmez.
>> Bu dosya adıdır.
Ve yapabileceğiniz üç şey var.
Sen, okuma yazma veya ekleyebilirsiniz.
En genel, siz okurken veya yazarken olacak
ya olacaksın çünkü Bir dosya ya da girilmesi bir çıkış.
Yani hemen hemen r ve w ikisidir şeyler çoğu kullanıyor olacağız.
>> Yani bu durumda, yaptığım tek şey Dosya adında bir dosyaya bir işaretçi oluşturun.
Onu açıyorum ve ben ben değilim reading-- dosya.txt adlandırılan bu dosyayı açmadan
ve ben bunu okuyorum.
Ben bu noktada yapıyorum hepsi bu.
Ve daha sonra bu sadece fonksiyonları vardır Eğer farklı şeyler okuyabilirsiniz hangi
veya farklı şeyler yazmak ya da farklı yerlere atlamak
nereye bakmak istiyorum.
Tüm bunlar online.
Tüm bu sadece Google yapabilirsiniz.
Gerek yok, onları ezberlemek.
Onlar sadece oradayız, kullanımınız için tek kullanımlık
Eğer isterseniz bunları kullanmak mümkün.
>> Yani ben sadece okumak istedim her seferinde bir karakter,
Ben dosya fgetc yapardı.
Ben isteseydim ya bir çizgi okumak için Bir defada metin, ben fgets yapardı.
Ve benzeri ve benzeri.
Tüm bunlar sadece farklı yapmak şeyleri siz kullanabilirsiniz.
>> Ve son olarak, sonra şeyler okurken veya yazarken bitirdiğinizde,
Ben sadece bu dosyayı fclose gidiyorum.
Ve bu biri, unutmayın Bunların, lütfen unutmayın
Başka dosya bunu ya işe gitmiyor.
Daima önce dosyayı açmak okuma veya okuma,
Her zaman var Eğer açarsanız kapatın.
Bellek ile Aynı şey, değil mi?
Hep almak zorunda Bellek ve ücretsiz.
Burada her zaman açmak zorunda okumak denemeden önce dosya
ve her zaman var açtıktan sonra kapatın.
>> Yani bu online da.
Ben sizi meydan gidiyorum tür ki baskılar bir program yazmak
Bir dosyaya hello.world.
Gerçekten basit.
Aslında sadece içerir kod birkaç satır
bu sadece daha önce yazılmıştı.
Sen onları koymak için gidiyoruz Birlikte ve yazma.
>> Yani bazı önemli şeyler akılda tutulması gereken Senin ise çocuklar bu kullanmaya çalışıyorlar.
Bu hepsi çok yararlı ise senin pset bu hafta,
fopen Bir dosya işaretçisi yaratmasıdır.
Aslında fiziksel dosya değil.
Tüm bu işaret ediyor Açmak istediğiniz dosya.
Ve aslında sen, ne zaman Diğer fonksiyonlardan herhangi kullanıyorsanız
fread veya fwrite gibi ya fgetc ya fgets olduğu
Eğer sadece bu çevrede geçen olduğunuzu Bu fonksiyonların tüm işaretçisi.
Yani aslında almıyorsun dosya ve işlevleri için kullanmaya,
Sadece işaretçi alıyorsun ve bu fonksiyonlara koyarak
kullanabilirsiniz, böylece.
>> Ve Kapatmak unutursanız dosya bunu kullandıktan sonra,
program bellek sızdırıyor gidiyor.
Esasen, bütün bu araçlar kötü şeyler olacak ki
ve program olacak düzgün çalışmayabilir.
Ve böylece pset üzerinde başlangıcı, bence
O explained-- yerde kısa var Nate Valgrind ne explained--.
Valgrind All sizin için bir yoldur Eğer bellek sızıntısı değil emin olun.
Yani siz yapmak istiyorsanız Emin kısa olduğunu izlemek
o kadar açıklıyor, çünkü Gerçekten de ne olur.
TAMAM.
Yani, gerçekten geçti gerçekten hızlı çünkü ben gerçekten
bahsediyoruz almak istiyorum pset siz ayrılmadan önce.
Herkes kavramsal sorunuz var mı?
Çoğunlukla tüm bu sadece sözdizimi olduğunu Dosyaları okumak veya yazmak için kullanabilirsiniz.
>> Son olarak, herkesin favori.
Biz şimdi pset hakkında konuşmak için gidiyoruz.
Yani, ellerin gösterisi, nasıl birçok Siz bu hafta spec okudun mu?
Oh, bu yarısı.
Bu iyi.
Yani bu, gerçekten aslında bir olduğunu anlamda gerçekten eğlenceli pset
Eğer gibi hissediyorum dedektif sen çünkü
Tüm bu gerçekten harika şeyler yapıyor Eğer yapabileceğini bilmediğini
ama şimdi gerçekten harika Onları yapabilirsiniz.
Ve aslında bir çok şey Siz düşündüğünden daha basit.
>> Yani temel yarısı Bu program, sen vardır
kaynak kodunu indirmek için gidiyoruz ya da Dağıtım kodu bizim tarafımızdan yazılmış.
Ve bir klasör için gidiyoruz denilen BMP ve başka bir klasör
JPG aradı.
Senin BMP içinde, sen Üç programları olacak.
Bunlardan biri zaten sizin için yazılmıştır.
Böylece copy.c bir programdır biz zaten yazdım
Sizin için indirmek için gidiyoruz.
Yaptığı tüm bir resim girişi olarak almak olduğunu ve çıkış olarak bir kopyasını yapar.
Yani bütün bu dosya yapıyor bulunuyor.
>> Ama sizin için ne yapmak istediğinizi whodunit-- Seninle çok kaç
çocuklar beşinci sınıftan veya belki-- hatırlıyorum Eğer, belki üçüncü sınıf younger-- ediyoruz
Siz gizli mesajlar vardı ve bunun üzerine bir parça kağıt koymak zorunda
mesajı çözmek için?
Evet?
Yani biz yapıyoruz hepsi Bir bilgisayar için bu süre dışında.
Yani biz bu güzel görüntüyü verdik.
Gibi görünmüyor altında bir şey ama
size yardımcı olacak bir ipucudur soruya cevap biz istiyoruz.
>> Esasen ne istediğinizi dosya girişi yapmak için,
etrafında bazı şeyler çimdik, belki renkleri ayarlamak,
şeyler kayması böylece ne mesajı yoluyla gelebilir olduğunu.
Yani içeride gizli piksel ve bilgi
Bu doğru kodunuzu yazarsanız çözmek ve size anlatacak
Bu ipucu nedir.
Ve bu yüzden bazı yararlı ipuçları olarak nasıl Bu yaklaşırken hakkında gitmek istiyorum.
>> Gerçekten tanıtmak istiyorum Dosya I kendinizi G / Ç
Biz okuma çünkü dosya ve dosyalara yazma.
Sağ?
Ve böylece biz ne zaman yapmak bu, bu içerir
I / O dosya. Sen gidiyorsun alışmak zorunda
ile, nasıl resim dosyalarını açmak mı?
Nasıl resim gibi dosyaları için yazıyorsunuz?
Nasıl o şeylerin hepsini yapacağız?
Bu gerçekten yararlı olacak.
>> İkincisi, nasılsın değiştirmek mümkün olacak
Bu resmi temizlemek renkler?
Muhtemelen dahil olacak senin piksel ya da RGB değerlerini ayarlayarak
yerde esasen orada.
Hiçbir doğru yol ve var Senin sürece bu çözümü
sürece olabildiğince tür olarak can-- bunu yapmak için bu pikselleri ayarlayın
Eğer umurunda şey gibi görünüyor.
Yani biz de umurumda hepsi bu.
Peki bunu yapmak için birçok yol var.
Sadece kadar onunla oynamak Eğer çalışan bir şey olsun.
Ve gerçekten olurdu kod sürpriz nasıl birkaç satır
Aslında bunu yapmak gerekir.
Ben üç gibi konuşuyorum Kod toplam hatları
Yazmak gerektiğini sırayla bunu.
Eğer kendinizi bulmak Yani eğer 40 yazma, kod 30 satır,
muhtemelen yanlış yapıyorsun.
Yapmanız gereken her türlü biridir renkleri ile oynamak
ve dışarı nasıl çalıştığını görmek.
>> Öyleyse biz biraz kafa Bir sorun daha için.
Burada yeniden boyutlandırma var nerede size soruyoruz
aşağıdaki amaçlara biz girdi olarak size veriyoruz Bir resim ve boyutlandırma
içine bir şey bu görüntü büyük veya küçük bir şey
Biz size boyutlarına bağlıdır.
Yani derste hatırlıyorum David hızlı bir şekilde
nasıl bilgi gezdirirken Bilgisayarlarınız tarafından tespit edilir
bu dosyanın bir tür demek için.
Yani bir Word dosyası özel sahiptir Bunun önündeki karakterleri
Bir Word dosyası var bilgisayarınızı söyle.
Bir JPEG ile aynı şey.
Bu durumda biz gidiyoruz Size bir JPEG dosyası vermek.
Bildiğimiz tek şey JPEG Dosya, doğru bir resim mi?
Ama bilgisayar ayıran çok özel yollarla bu.
Başında So Herhangi bir JPEG dosyası, sen
Bitmap denen sahip oluyor bilgi başlık ve bitmap dosya başlığı.
Tüm bu are Farklı veri parçaları
Bu, hey, bilgisayarınızı söyle dinleyin, bir JPEG geliyor
ve bu boyutlar veya Bu JPEG özellikleri.
>> Yani siz gerçekten bilmek istiyorum hangi bilgilerin içinde saklanır
Bu başlıkların ve Bunların boyutu budur.
Çalıştırdığınız yaparken Çünkü program sayesinde,
istediğiniz gidiyoruz Bu miktarın üzerinde atlayın.
Sağ?
Eğer umurumda değil, çünkü başlık değiştirmeyle ilgili,
Eğer sonra ne değiştirmeyle ilgili önemsiyorum.
Sağ?
Yani emin adamlar biliyor yapmak ne kadar büyük olan şeylerdir.
>> İkincisi, daha önce Başlamadan resminizi yeniden boyutlandırmak için çalışıyor,
Muhtemelen istediğiniz gidiyoruz orijinal boyutlarını kaydedebilirsiniz.
Sağ?
Ben bu resmi size Çünkü eğer 100 x 100 piksel olduğunu
ve ben seni yapmak istiyorum dört kat daha büyük,
Eğer var olduğunu biliyorum dörde bu boyutları çarpın.
Yani o zaman bir çıkış dosyası istiyorum Örneğin 400 piksel, 400.
Yani Sizin çocuklar için gerçekten yararlı orijinal boyutlarını kaydedebilirsiniz.
Ve sonrasında da, sonra Eğer yeniden boyutlandırma bittiğinde,
Eğer yeni başlıklar yazabilirsiniz yeniden boyutlandırma sonra bu yeni boyutlar.
>> Ve yolu, fiziksel Büyük piksel oluşturabilirsiniz
yazabilirsiniz olduğunu Yeni RGB--, RGB hatırlıyorum
tüm yeşil, kırmızı için duruyor, ve bir takım dosyasına blue-- piksel.
Ve istediğiniz gidiyoruz Neyin farklı miktarlarda
Biz dolgu diyoruz.
Tüm dolgu isimli alanlardır öncesi ve sonrası resimler
Bu, esas olarak Senin- haber ne kadar büyük o resmini söylemek
gerekir yukarı alarak.
Bu bir sürü için çok soyut Eğer, pset spec okumamış varsa
ama olacak zaman için çok yararlı
Aslında bu kadar okuyorsun.
Oh, evet, mantıklı gibi sen değilsin.
Neden bunu yapmak zorunda mı?
Mantıklı.
>> Son olarak, bu muhtemelen biridir En sinir bozucu programlar
Hiç adil yapamazsın, çünkü bu çalışma ya da değilse söyle.
Kurtarmak Bütün bu program, yapıyor ki düzgün çalışması halinde,
aniden gerekir 50 görüntüleri kurtarmak olduğunu
Bizim sabit diskte kaybedildi.
Bu program ile Ve böylece sorun Eğer gerçekten bunu test değil ki
Ya iyileşti çünkü Onları ya da yoktu.
Ve böylece tür sadece onunla oynamak zorunda
ve program ise Düzgün, sen edeceğiz çalışma
aniden görüyoruz Eğer ettik dizin
dev bir miktar var Şimdi orada resimler.
>> Yani yaklaşım nasıl Bu sorun, biz konum olduğunu
ne olduğunu vereceğim Bir card.raw dosya denir.
Esas olarak, bu var: sadece bozuk bir dosya
tüm resimler depolanan ile Eğer kurtarmak için ihtiyacımız olacak.
Yani muhtemelen istediğiniz gidiyoruz giriş için card.raw, veya açık,
senin card.raw dosyası ve konum işlemek istediğiniz olacak
o JPEG saklamak mümkün.
>> Yani, izleme ve depolanması başlamak istiyorum her JPEG sen bulmak o kadar.
Tek tek tüm gitmiyorsun aniden sadece 50 JPEG oluşturun.
Saklamak istediğiniz gidiyoruz Eğer açıyoruz kaç iz.
Ve sonra istediğiniz sen ne zaman, emin olun
Bir buffer-- yazma siz Ben neden bahsettiğimi bilecek
Eğer spec-- okumak kez istediğiniz Eğer imzasız kullanmakta olduğunuz emin olun
Char tampon.
>> Ve sonra sormak istiyorum Kendinizi sorusu,
Bir kaç bayt CF-- bir kart dosyasında bulunmaktadır?
Yani gidiyoruz kaç var senin tampona okumak istiyorum.
Sen emin olmak için gidiyoruz İki hizalama o zaman, çünkü
rastgele bellek dışarı sızması olmaz.
Tam olarak kaç biliyor byte İhtiyacınız ve kaç
Bunları yapmak istediğiniz bayt.
>> Ve sonunda, istediğiniz adında bir işlevi kullanın sprint--
s baskı özel dosyası oluşturmak için F-- bulduğunuz her yeni JPEG için isimler.
Oluşturduğunuz Yani ve Kartınızın içinde JPEG bulmak,
istediğiniz gidiyoruz bunları saklamak ve onlara isim.
Sağ?
Ve böylece gidiyoruz Bu işlevi kullanmak istiyorum
adları oluşturmak için bu senin JPEG tüm saklayabilirsiniz.
>> Ve son olarak, kapatmak için unutma Her JPEG bitirdiniz sonra.
Sen çünkü ne yapacak sen olduğunu
Muhtemelen sahip oluyor Bir döngü çeşit olduğunu
senin JPEG tüm dolaşır.
Bir JPEG yazmak için gidiyoruz Onu bulmak gibi yeniden adlandırın.
Ama bitirdiniz sonra her JPEG,
Başlamadan böylece kapatmak gerekir üzerinde ve bir sonraki resme geçmek.
Ve böylece bu şey o biz yapmak gibi gerçekten eğlenceli,
Çünkü bu tür bir garip sorun set aynı zamanda tatmin edici bir sorun, weirdly
setidir resimlerin tüm bu biz düzgün kurtarmak eğer sizin için var,
tüm resimler resimleri vardır harika öğretim elemanı, hem
Harvard, en burada-- ve burada Yale'de.
Ve sen ne olursa Bütün bu resimleri kurtarmak
ve personel tanımlamak Bu kartların üyeleri,
ve eğer bize sahip selfies almak Eğer kampüs çevresinde bizi bulmak
Her fotoğraf bize göndermeniz için, biz olacak Dropbox alan bir gigabayt verir.
>> Yani burada matematik yapalım.
50 fotoğraf varsa ve 50 öğretim üyesi,
Tüm 50 arasında bulmak için ne Bize, yani Dropbox 50 gigabayt var
temelde, biz sizi vermek olacak.
Yani bazı ekstra eklenen teşvikler Siz olmasaydı sadece
kayıp görüntüleri kurtarma umurumda.
Bazı eklenen teşvikler de var.
Bu eğlenceli bir sorun kümesi var.
Gerçekten öyle.
Bu tür sinir bozucu ama sonra Eğer fark ettiklerinde gerçekten eğlenceli olur
vay, ben şimdi çalışıyor ve var Bu resimlerin hepsi var
ben sadece kendim yarattım.
>> Pset üzerinde herhangi bir sorunuz var mı?
Herkes için kim zaten başladı, sorularınız varsa,
Birkaç dakika sonra burada olacağım bölüm benimle konuşmak istiyorum.
Aferin, çocuklar.
Üzgünüm, ben bilgi size çocuklar dökülüyor.
Göstericiler, gerçekten, gerçekten zorlu ve sinir bozucu.
>> Ve ben gerçekten memnunum Siz benimle kaldı.
Biz derinlemesine daha fazla konuşacağız Gelecek hafta
Biz hash tabloları yapmaya başlayabilirsiniz olarak ve onları dahil daha fazla işlevleri.
Evet.
Kimse herhangi varsa Yani sorular, etrafta olacağım.
Geliyor ve daha fazla sürebilir için teşekkürler şeker daha fazla şeker var, çünkü.
Güzel.