>> DAVID Malan: Salam, və CS50 geri salamlayıram.
Belə ki, bu həftə dörd sonudur.
Ilk yalnız bir elan.
Ki, qondarma beşinci Bazar ertəsi Belə ki, Bu gələn bazar ertəsi gündəmə gəlir.
Bu dəyişməyə imkanıdır Məktub sinif / UNSAT SAT və ya
məktub grade / UNSAT oturdu.
Annoyingly ki, prosesi tələb edir siz doldurun imza, çünki
o çəhrayı əlavə et / açılan formalarından biri.
>> Çünki texniki, SAT / UNSAT versiya və hərfi grade versiyası
fərqli kataloq nömrələri var.
Amma heç bir böyük.
Yalnız mənə olmaq və ya soymaq və ya hər hansı bir anda Lauren.
Əgər cür yoxsa Və ya bize e-poçt sənədləşmə işləri bu gün lazımdır və biz
sizi kömək əmin olacaq Bazar ertəsi əvvəl ki, qayğı.
>> Bütün sağ, bu gün -
faktiki olaraq, əks-səda bir qədər var.
Biz ton məni yerə bir az bilərmi?
OK.
Bu gün Beləliklə, biz bir mövzu təqdim göstəricilərinə kimi tanınır.
Və mən bu biri olduğunu etiraf edəcəyik biz edirlər ki, daha mürəkkəb mövzular
Bu sinif əhatə, və ya, həqiqətən, heç C. istifadə edir ki, giriş kursu
>> Lakin xüsusilə, bunun üçün mənim söz almaq Fikrinizi bir az daha əyilmiş olarsa
bu gün və həftə gəlib.
Bu əldə nümayəndəsi deyil Bu hər hansı bir pis yalnız o deməkdir ki,
bu xüsusilə mürəkkəb mövzu var Mən söz verirəm ki, bir neçə həftə
Beləliklə, bütün çox şəfəqli görünür olacaq retrospect sadə.
>> Mən hələ bu gün unutmayın.
Mən Elliott Yemekhane oturmuşdu mənim TF Nishat Mehta yanında oturan,
Elliott ev sakini oldu.
Və nədənsə bu mövzu yalnız klik.
Hansı mən də mübarizə demək zaman bəzi məbləği, lakin mən
Hər hansı belə qarşısını kömək etmək üçün əlimdən gələni edəcəyəm Bir mövzu ilə sonda mübarizə
çox güclü deyil.
>> Əslində, mövzularından biri biz müzakirə edəcəyik gələcək həftə ki,
təhlükəsizlik və necə həqiqətən bilərsiniz yollarla maşın istismar
nəzərdə edilməmişdir.
Və bu exploitations adətən var hatalar, səhvlər nəticəsində biz
insanların bir anlama deyil etmək əsas həyata keçirilməsi
ətraflı hansı vasitəsilə proqramlar edilir.
>> İndi bu etmək üçün bütün daha çox istifadəçi görünür dostluq, mən 10 oynamaq istədiyiniz fikir
bir az claymation ikinci preview gətirildi olan Binky adına rəqəm
Stanford bizim yoldaş həyat, professor Nick Parlante.
Mənə bu vermək imkan burada Binky və iltifat.
>> [Video playback]
>> -Hey, Binky.
Uyan.
Bu göstərici əyləncə üçün vaxt var.
>> -Ne var?
Göstəricilərinə haqqında məlumat əldə edin?
Oh, goodie.
>> [END video playback]
>> DAVID Malan: Stanford edir kompüter elm.
Belə ki, daha çox ki, gəlib.
>> [Alqış]
>> DAVID Malan: Üzr istəyirik, Nick.
>> Belə ki, biz sona çatan son dəfə xatırlayıram Bu, həqiqətən maraqlı cliffhanger
qovuşdurmağımız bu funksiya yalnız iş deyildi.
Ən azı daxilən onu hiss bu iş olmalıdır kimi.
Sadəcə dəyərlər dəyişdirmə iki integers.
Amma Xatırladaq ki, biz çap zaman əsas, bir və orijinal dəyərlər
iki, onlar hələ də bir idi və iki və iki biridir.
>> Mənə həqiqətən keçid bildirin üzərində cihaz üçün.
Və mən skelet kodu biraz yazdı Mən iddia yerləşir, burada irəli ki, x
1 olacaq, y 2 olacaq.
Mən sonra onların hər iki çap print f dəyərlər.
>> Mən burada iddia biz onları dəyişdirmək olacaq.
Bizə burada boş spot sol yalnız bir anda bu gün doldurun.
Sonra mən iddia gidiyorum ki, iki dəyişənlərin dəyişdirildikdə edilmişdir.
Sonra çap gidiyorum yenə onları.
Və Beləliklə, ümid edirəm ki, 2 1 görməlisiniz.
2, 1.
Super sadə ki, İndi qol.
>> Beləliklə, biz dəyişdirmə haqqında necə getmək yoxdur iki dəyişənlərin?
Burada təklif Yaxşı ki, əgər bu fincan bir kompüter yaddaş təmsil edə bilər.
Bu, bir neçə sokması edir bir neçə sokması edir.
Biz könüllü və çıxmaq ola bilər tanış olduqda, bizə içkilər qarışdırmaq?
Up Hadi.
Sizin adınız nədir?
>> Jess: Jess.
>> DAVID Malan: Jess?
Qədər haqqında Jess Hadi.
Ağla deyilsə, biz qoymaq üçün Siz Google Glass belə biz
Bu əbədiləşdirmək.
OK, şüşə.
Video yazın.
Və OK, biz yaxşı burada Jess ilə gedin.
Bütün hüquqlar.
Cavab gözəl.
>> Beləliklə, mən istərdim nə burada - olduqca tez, siz bilər -
yalnız bizim portağal yarım şüşə pours şirəsi və süd yarım şüşə qaldırıcı,
səmərəli ədəd 1 təmsil digər kuboka bir fincan və 2-ci.
>> Bu yaxşı görüntülər olacaq.
>> Jess: Üzr istəyirik.
>> DAVID Malan: Xeyr, yoxdur.
OK.
Gözəl.
Bütün sağ, biz dörd bayt var portağal şirəsi lazımdır.
Biz bu dəyəri 1 adlı bilərsiniz.
İndi süd dəyərində daha dörd bayt.
Bu 2 qiymətləndiririk zəng edəcək.
Müvafiq olaraq, x və y belə.
>> Bütün hüquqlar, indi əl-da məsələ əgər - bütün qarşısında sizin üçün, Jess,
Sizin sinif yoldaşları ilə -
x və y dəyərlərinin dəyişdirmək üçün biz də portağal şirəsi istəyirəm ki,
digər kubok və bu fincan süd, necə Siz bilər - həqiqətən nə qədər
it - bunu haqqında getmək?
>> OK, qərar hikmət sahibidir.
Beləliklə, siz bir az daha çox yaddaş lazımdır.
Belə üzrə müvəqqəti ayrılması bildirin fincan, Siz.
İndi x və y mübadilə davam etdirilir.
>> Əla.
Belə ki, çox yaxşı.
Qədər Jess təşəkkür edirik.
Burada var.
Bir az suvenir.
>> OK, belə ki, açıq-aydın, super sadə fikir.
Biz bir az lazımdır ki, tamamilə intuitiv daha çox storage space - bu formada,
bir fincan - biz həqiqətən istəyirsinizsə, bu iki dəyişənlər dəyişdirmək.
Elə məhz bunu edək.
Up burada Ben iddia Ü arasında Bəzi dəyişdirmə bunu etmək niyyətindəyik, mən lazımdır
davam və temp bəyan edir.
Və mən x, demək, onu bərabər müəyyən olacaq.
>> Sonra dəyəri dəyişmək üçün gidiyorum yalnız Jess kimi x burada etdi
süd və portağal şirəsi y bərabər olmalıdır.
Və mən bərabərdir y dəyişdirmək üçün gidiyorum indi biz olacaq deyil, çünki x,
bir daire yapışdırılmalıdır deyil, temp.
Harada müvəqqəti I - və ya Jess müvəqqəti portağal şirəsi qoymaq
ki, clobbering əvvəl süd ilə fincan.
>> Belə ki, mənə indi irəli getmək və bu imkan.
Bu noswap.c deyirlər.
İndi mənə heç mübadilə run edək.
Mən genişləndirmək əgər həqiqətən mən bax pəncərə bir az ki,
x 1, y 2-dir.
Və sonra x 2, y 1-dir.
>> Amma Bazar ertəsi günü biz hər şeyi etdi ki, xatırlayıram bir az fərqli vasitəsi I
əvəzinə, bir köməkçi funksiyası həyata Siz, əslində etibarsız idi.
Mən bunu dəyişdirmək çağırıb.
Mən bu iki parametr verdi və mən adlı onlara və mən onları b çağırıb.
>> Açığı, mən onları x və y zəng edə bilər.
Dayandıraraq bir şey yoxdur ki, bunu mənə.
Amma o var iddia edirəm bir az birmənalı.
Çünki Bazar ertəsi Xatırladaq ki, biz Bu parametrlər olduğunu iddia etdi
dəyərlər surətləri da keçdi
Sizin ilə Belə ki, yalnız messes ağıl, mən hesab edirəm ki, siz istifadə əgər
eyni dəyişənlər.
>> Yəni mən onların əvəzinə zəng edəcəyik və b, yalnız aydınlıq üçün.
Amma biz onlara ən zəng edə bilər biz istədiyiniz hər şey.
Və mən seçin və yapışdırıb üçün gidiyorum orada qədər səmərəli kod
burada daxil aşağı.
Mən yalnız çalışır gördüm ki, çünki.
Belə ki, olduqca yaxşı forma var.
Mən bir, mənim x mənim x değiştireceğiz a, b və b mənim y mənim y.
>> Belə ki, başqa sözlə, eyni məntiq.
Jess edir ki, tam olaraq eyni şey.
Və sonra mən nə üçün bir şey Burada, əlbəttə, indi bu ibadət edir
funksiyası, və ya bu funksiya zəng edin.
Belə ki, mən iki ilə bu funksiyanı çağıracaq giriş, x və y, və hit edin.
>> OK, belə ki, əsaslı eyni şey.
Əslində, mən yəqin ki, proqram etdik tərəfindən lazımsız kompleks
yalnız alaraq ki, bir funksiyası yazı Məcəlləsinin bəzi altı xətləri halbuki mən
əvvəllər həyata keçirdiklərini bu üç yalnız.
>> Belə ki, mənə indi davam və yeniden yapmak bildirin Bu, heç bir svop edir.
Bütün sağ, mən burada qədər berbat.
Bu səhv lazımdır bilər ki, Sizin kimi getdikcə daha çox görmək
proqramlar daha mürəkkəb almaq.
Amma asan fix var.
Məni buraya geri hərəkət edək.
>> Və mən görüyorum ilk səhv var?
Örtük Bəyannamə.
Ki, adətən nə göstərir edir?
Oh, mən prototip unuttum.
Mən compiler öyrətmək unuttum swap mövcud gedir, baxmayaraq ki, o,
çox başında mövcud deyil Proqramın.
Beləliklə, mən yalnız, etibarsız, svop demək gidiyorum int, bir int b, nöqtəli vergül.
>> Mən reimplement fikrində deyiləm.
Amma indi nə burada oyunları.
Və bildiriş vergül olmaması burada zəruri deyil zaman
həyata keçirir.
>> Belə ki, mənə bu yeniden yapmak qoy, heç svop edir.
Daha yaxşı forma.
Heç bir svop Run.
Və bu Lanet olsun.
Biz bazar ertəsi olduğu İndi biz geri döndük harada şey dəyişdirmək etməyib.
>> Və intuitiv şərh var nə üçün bu belədir?
Bəli?
>> TƏLƏBƏ: [işitilemez].
>> DAVID Malan: Eynilə elə.
Belə ki, A və B x və y surətləri var.
Və əslində, istənilən vaxt siz olduğunuz İndiyədək bir funksiya zəng
ints kimi dəyişənlər keçir -
svop burada gözləyir kimi -
uşaqlar nüsxə keçən edilmişdir.
>> Bir az edir deməkdir İndi üçün vaxt, bir split ikinci,
bir bit surəti kompüter başqa bit daxil dəyişən.
Amma belə bir böyük deyil.
Amma onlar bununla surəti istəyirik.
>> Və indi, svop kontekstində, Uğurla əslində am
A və B dəyişir.
Əslində, tez nə edək ağlı başında olma kontrol edin.
Print F i, yeni xətt%-dir.
Və bir edək plug.
İndi b eyni şeyi edək.
Və burada eyni şey edək.
>> İndi mənə eyni xətti surəti imkan yenidən funksiyası altındakı
maraqlı mənim üç xətləri sonra icra və ola bilər
yenə A və B çap.
Bu etmək İndi qoy, heç svop edir.
Mənə terminal pəncərə edək bit taller, biz görürük ki,
bir dəfə onu daha.
>> Və heç svop axır.
x 1, y 2-dir. 1 deyil, b 2-dir.
Və sonra, bir 2, b 1-dir.
Belə ki, yalnız Jess kimi işləyir Burada daxili svop etmişdi.
Amma əlbəttə ki, heç bir təsir oldu əsas olan dəyişənlər üzərində.
>> Beləliklə, biz bir oyun gördüm vasitəsi biz sağ, bu düzeltmek bilər?
Bu scoping ilə qarşı-qarşıya olduğunuzda məsələ, siz bilər yalnız ayaqla zərbə və x etmək
və y hansı əvəzinə dəyişənlər?
>> Siz onlara qlobal edə bilər.
Fayl çox üst onları qoyun biz hətta 15 oyun, olduğu kimi.
Biz qlobal dəyişən istifadə edin.
Amma oyun 15 kontekstində bir qlobal olması ağlabatan deyil
, şura təmsil dəyişən çünki 15.c bütövlükdə bütün
ki, oyun həyata haqqında.
Ki, fayl etmək var nə.
>> Ancaq burada bu halda, Ben funksiyası mübadilə çağırır.
Mən iki dəyişənlər dəyişdirmək istəyirik.
Və yalnız sloppy hiss başlamaq lazımdır əgər bizim bütün həlli
biz dairəsi daxil zaman problemləri məsələlər qlobal olun.
Çox tez proqram Çünki olduqca mess olmaq gedir.
Və biz çox sparingly etdi 15.c. bir nəticəsində
>> Bir var həyata Lakin bu çevrilir cəmi yaxşı yol.
Mənə həqiqətən geri getmək və silmək edək yalnız bu kodu sadələşdirmək, f-nin çap.
Və mənə təklif edək ki, Bu, həqiqətən, pis.
Amma əvəzinə bir ulduz əlavə əgər və ulduzları, mən əvəzinə bu bırakabilirsiniz
ki, bir funksiyası faktiki əməliyyat.
>> Belə ki, mənə burada geri deyərək etiraf edək ulduz, həmişə çətindir
mən ulduz demək lazımdır.
Mən yalnız bir qədər fess lazımdır.
Bütün hüquqlar.
İndi nə gedirəm əvəzinə etməliyəm?
>> Bütün Belə ki, ilk mən müəyyən etmək üçün gidiyorum yerinə daxil int keçmək
svop funksiyası yerine Ben int ulduz demək gedir.
İndi, ulduz nə göstərir edir?
Bu göstərici ki anlayışdır Binky olan claymation xarakter idi
bir an əvvəl istinad.
>> Biz int ulduz, anlam demək Belə ki, əgər bu indi bir olacaq deyil ki,
onun dəyəri ilə keçdi.
Bu da kopyalanamaz niyyətində deyil
Əksinə, bir və ünvanı da qəbul ediləcək
>> Belə ki, kompüter içerisinde geri başqa, yaddaş bütün dəstə edir
RAM olaraq da bilinir.
Və RAM yalnız bir bayt bütün dəstə.
Mac və ya PC var Belə ki, əgər iki gigabayt, 2 var
yaddaş milyard bayt.
>> İndi yalnız güman edək yalnız ki, şeyi gözəl və səliqəli saxlamaq, biz
bir ünvan təyin -
bir sıra -
kompüter RAM hər byte üçün.
O 2 ilk byte milyard sayı sıfır deyil.
Növbəti bir byte bir nömrəli sayı qədər iki, bütün yol, nöqtə nöqtə
təxminən 2 milyard dot.
>> Beləliklə, siz bayt sayı ola bilər kompüter yaddaş.
Belə ki, ki, güman edək nə biz ünvanı deməkdir.
Beləliklə, mən neler int ulduz, görəndə İndi svop daxil qəbul edir
bir ünvanı.
Onun dəyəri, lakin nə onun poçt ünvanı, necə deyərlər, edir -
RAM onun yer.
>> Və eyni b, gedirəm eyni şeyi demək.
Int, ulduz, b.
Bir kənara, texniki ulduz kimi digər yerlərdə davam edə bilər.
Amma biz olan ulduzu standartlaşdırmaq lazımdır veri növü hüququ gələcək.
>> Belə ki, imza indi deməkdir dəyişdirmək, mənə vermək ki, bir int ünvanı və zəng
ki, ünvanı.
Və mənə bir ünvan vermək int və ünvanı b çağırırıq.
>> Amma indi burada kodu dəyişdirmək üçün var.
Çünki int temp bəyan əgər -
hansı növü int hələ də -
ancaq, bu, bir mağaza dəyəri nə cür?
Aydın olmaq üçün, mən bir bir qoyaraq edirəm hazırda yazılı olaraq kodu?
>> Mən yer qoyulması alıram.
Amma qayğı yoxdur yeri indi, sağ?
Temp yalnız Jess "üçüncü fincan var mövcud, nə məqsədlə?
, Dəyəri saxlamaq üçün.
Süd və ya portağal şirəsi.
Faktiki yerləşdiyi ünvan saxlamaq deyil o şeyi ya bir hiss
Bu real kiçik cəfəng hər halda dünya kontekstində.
>> Belə ki, həqiqətən, nə temp qoymaq istəyirəm bir ünvanı, lakin deyil
bir məzmunu.
Bir 123 kimi bir sıra Belə ki, bu ki, yaddaş 123RD byte ədalətli
, işğalçı olmaq olur ki, dəyər bir işğalçı olmaq olur.
>> , Mən ünvana getmək istəyirsinizsə Mən ulduz demək lazımdır.
Eynilə, əgər mən nə dəyişdirmək idi ünvanda a, mən dəyişmək
Bu başlamaq üçün.
Mən də var nə saxlamaq istəyirsinizsə, yeri da var nə ilə yer
b, ulduz b ulduzu.
>> Bu olduqca Belə qısa, hətta Hələ batma - və mən gözləmək deyil
belə sürətli bildirib ki -
Mən yapýyorum bütün prefixing olduğunu dərk Mənim bu dəyişənlər üçün ulduzları,
kəlam dəyərlər qamarlamaq yoxdur.
Dəyərləri dəyişdirmək etməyin.
Əksinə, həmin ünvanlara getmək və dəyəri almaq.
Ki, ünvanı və dəyişiklik keç orada dəyər.
>> Belə ki, indi məni Üste diyirləyin bildirin yalnız, burada bu xətti düzəltmək üçün
uyğun prototip dəyişir.
Amma indi bir şey etmək lazımdır.
Daxilən, mən növləri değiştirdik əgər arqumentlər ki, svop gözləyir,
Mən başqa nə lazımdır mənim kodu dəyişə?
>> Mən mübadilə zəng zaman.
İndi nə am Çünki Mən hələ dəyişdirmək keçən?
Dəyəri x və y dəyəri, və ya süd və portağal şirəsi.
Amma bunu istəmirəm.
Mən əvəzinə nə keçmək istəyirsən?
X yeri və y yerini.
Onların poçt ünvanları, nədir belə danışmaq.
>> Belə ki, bir işareti var.
Ünvanı kimi səslər Ampersand cür.
belə n, işareti, ünvanı x və y ünvanı.
Belə ki, biz istifadə qəsdən var ampersands funksiyası zəng zaman,
və ulduzları elan və zaman funksiyasını həyata keçirir.
>> Kimi və yalnız işareti hesab operator ünvanı və kimi ulduz
operator getmək -
və ya, daha düzgün ki, dereference operator.
Belə ki, yalnız söz bütövlükdə çox var İndi, inşallah, svop gedir ki,
doğru olmalıdır.
>> Mənə davam və edək -
deyə, bu, həqiqətən, fayl adını dəyişmək imkan Bu proqram hələ mübadilə adlanır.
Edirəm ki, biz indi swap.c zəng lazımdır ki, iddia edir.
Belə mübadilə etmək.
Dot çizgi, svop.
>> İndi həqiqətən, x 1, y 2-dir.
Və sonra, x 2, y biridir.
Yaxşı bu edə bilməz, əgər Bakalým nə kimi fərqli az
burada gedir.
Birincisi, mənə bizim Yakınlaştırmak imkan burada ekran rəsm.
Və mənə bir an təklif edək - və Mən burada çəkmək zaman aynalı olunacaq
orada indi - Mənə təklif edək ki, Burada yaddaş bütün dəstə, və ya
RAM, mənim kompüter daxilində.
>> Və bu, bite sayı olacaq , deyirlər 1 edək.
Bu bytes sayı 2 olacaq.
Və mən bütün dəstə edir, edəcəyik sonra dot dot nöqtələr bir dəstə
2 milyard var göstərir ki, bunlar.
4, 5 və s.
>> Belə ki, ilk beş bayt var mənim kompüter yaddaş.
Bütün hüquqlar?
2 milyard həyata çox azdır.
Amma indi mən təklif etmək gidiyorum aşağıdakı.
Mən x gedir ki, təklif gidiyorum 1 nömrəli mağaza və y gedir
sayı 2 saxlamaq üçün.
Və mənə indi irəli getmək və təmsil bildirin Bu dəyərləri aşağıdakı kimi.
>> Aşağıdakı kimi bunu edək.
Mənə yalnız bir ikinci verin.
Bir ikinci.
OK.
Mən bu bir az etmək istəyirəm -
daha bunu edək.
Əks halda mən gedən və istifadə edirəm Eyni nömrələri, bilmədən,
neçə dəfə.
>> Belə ki, yalnız biz müxtəlif nömrələr var haqqında danışmaq, qoy bu byte zəng
sayı 123, 124, 125, 126, və dot dot dot.
Və mənə gedirəm ki, indi iddia edək burada dəyəri 1 və dəyəri 2 qoymaq
Burada, əks halda x və y kimi tanınır.
Belə ki, məhz belə olur Bu x, bu y.
>> Və yalnız bir təsadüfi şans tərəfindən, kompüter, əməliyyat sistemi,
yerdə x qoymaq oldu sayı 123.
Və y yeri 124 qədər başa çatdı -
Lanet olsun.
Mən bu sabit olmalıdır.
Insan Oh, mən, həqiqətən, bunu istəyirsiniz?
Bəli, bu və düzeltmek istəyirəm bu gün düzgün b.
Bağışlayın, ancaq bu yeni.
>> 127, 131, və mən bu olmaq istəmədi kompleks, lakin nə mən dəyişə bilmədi
orada nömrələr?
Mən ints istəyirəm, çünki əslində dörd bayt ola bilər.
Belə ki, bu barədə super anal olsun.
Əgər 1 müraciət etmək olur ki, 123, 2 ünvanda olacaq
Yalnız 4 byes üz var 127 çünki.
Vəssalam.
Və biz bütün haqqında unutmaq lazımdır dünyanın digər ünvanları.
>> Belə ki, x, yer 123 edir y yeri 127 edir.
İndi, mən, həqiqətən nə etmək istəyirsiniz?
İndi svop zəng zaman, nə var həqiqətən gedir?
Yaxşı, mən svop zəng zaman, mən keçən alıram x ünvanı və y ünvanı.
Belə ki, məsələn, əgər bu iki ədəd kağız indi iki əks
dəlilləri A və B dəyişdirmək üçün, nə am bu ilk yazmaq gedir
Mən kimi istinad zəng etmək gidiyorum hansı?
>> Məhz, 123.
Beləliklə, mən iddia bu bir.
Bu parametr var.
Mən orada x ünvanı qoyulması alıram.
>> Nə olub?
>> Xeyr, yoxdur.
Bu OK.
Hələ yaxşı hələ yaxşı.
Belə ki, bu bir.
İndi kağız ikinci parça, Bu b olacaq, Mən nə am
yazılı olacaq kağız bu parça?
127.
>> Belə dəyişmişdir ki, yalnız bir şey Bu hekayə bizim əvvəlki izah edir
daha 1 sözün çox və 2, Ben 123 və 127-ci keçmək gedir.
Və mən indi bu daxili qoymaq gidiyorum Bu kutuyu, bütün sağ?
Belə ki, qara qutu indi təmsil svop funksiyası.
>> Eyni zamanda, indi kimsə edək svop funksiyası həyata keçirir.
Up burada kimsə ki, könüllü istəyirsiniz?
Up Hadi.
Sizin adınız nədir?
Charlie.
Bütün sağ, Charlie.
Up Hadi.
>> Belə ki, Charlie oynayacağıq bizim qara qutu rolu.
Mən sizin istədiyiniz nə Charlie, İndi belə bir şəkildə svop həyata olunur
ki, bu iki ünvanları nəzərə alaraq, həqiqətən gedirdi
dəyərləri dəyişdirmək üçün.
Və mən qulağına pıçıldamaq lazımdır burada TV çalıştırabilirsiniz.
>> Belə ki, davam və siz qara qutu istəyirik.
Var olmaq.
Hansı dəyərlər üçün görmək və bunu siz b üçün nə dəyərlər görürsünüz?
>> Charlie: a 123 və b 127 edir.
>> DAVID Malan: OK, məhz.
Yalnız bir an üçün var İndi duraklatabilirsiniz.
Siz indi nə olacaq ilk şey kodu görə - hansı
İndi ekranda qoparmaq lazımdır -
bir az ayırmaq olacaq yaddaş bit temp çağırıb.
Beləliklə, mən davam gedən və alıram siz yaddaş verir.
>> Beləliklə, bu üçüncü dəyişən olacaq Sizə əlçatan ki,
Siz temp çağırıb.
Və nə yazmaq gedir kağız temp parça?
>> Charlie: Pointers, sağ?
>> DAVID Malan: OK, yaxşı deyil göstəricilərinə lazım.
Beləliklə, mən var kodu xətti sağ tərəfində qeyd
orada başlamaq edək.
Bu ulduz deyir.
Belə bir anda saxlanılması olunur sayı 123.
Və yalnız daxilən nə star 123 nəzərdə tutursunuz?
>> Amma xüsusi bir əgər 123, bir ulduz nə deməkdir?
Bir dəyəri.
Və ya daha çox təsadüfən var gedin.
Belə ki, ildə bir keçirilməsi, mənə təklif edək Sizin tərəfdən, davam və müalicə ki,
sanki bir xəritə var.
Və kompüter üçün özünüzü çox gəzmək yaddaş, və nə bizə
yeri 123.
Eynilə elə.
>> Beləliklə, biz yeri 123 bax nə, açıq-aydın var?
OK, belə ki, indi nə dəyər temp içinə qoymaq üçün gedir?
Eynilə elə.
Belə ki, davam və bunu.
Və parça sayı 1 yazın Hal-hazırda temp adlı ki, kağız.
>> İndi növbəti addım ki, siz həyata olacaq
nə olacaq.
Yaxşı, nin sağ kodu Növbəti line star b edir. b ki,
Əlbəttə, bir ünvan depolar.
Bu 127 ünvanlanır.
Star b Təsadüfi danışan nə deməkdir?
>> Yere gedin.
Belə ki, davam və nə bizə yeri 127 at.
OK.
Əlbəttə ki, yer 127 at, hələ dəyəri 2-dir.
Beləliklə, nə siz artıq mağaza gedir bir yerdə nə var?
Belə ki, ulduz bir vasitə bir yerə gedin.
Bir yeri nədir?
>> Eynilə elə.
Belə ki, indi, dəyişmək istəyirsinizsə ki, yerdə nə var -
Mən irəli getmək və run lazımdır pozan burada.
İndi fırça onu geri qoymaq.
Nə nömrə yazmaq gedir İndi boş qutusunda?
>> Eynilə elə.
Belə kodu bu xətti, aydın olacaq - edək Mənə Charlie nin nə fasilə və
Burada qeyd, nə o, yalnız həyata edir yeri 123 ki, qutusuna yazmaq
b əvvəllər idi ki, dəyəri.
Və belə ki, biz indi həqiqətən həyata etdik kod bu ikinci xətt.
>> İndi təəssüf ki, yoxdur qalan hələ bir xətt.
Sanki, temp indi nədir?
Bu açıq-aydın bir nömrəli var.
Bu bir ünvan deyil.
Bu növ, yalnız bir sıra həftə bir dəyişən.
>> İndi star b o deməkdir ki, deyəndə ünvanı b getmək, bunun edir
burada kursu.
Belə ki, bir dəfə orada almaq -
Mən irəli getmək və həqiqətən nə silmək lazımdır orada - Siz və nə
yeri 127 indi yazmaq gedir?
>> Charlie: Temp, biridir.
>> DAVID Malan: Temp, biridir.
Və sonunda temp nə olur?
Bəli, biz həqiqətən bilmirəm.
Biz, həqiqətən, qayğı yoxdur.
Biz bir funksiyası icra etdiyiniz hər hansı bir zaman İndiyədək, hər hansı bir yerli dəyişənlər var
həqiqətən yerli.
Onlar yalnız yox.
Onlar fəaliyyət reclaimed edirik nəhayət sistemi.
>> Belə temp hələ var ki, dəyəri 1 Sort əsaslı edir
bizə maraqsız.
Bütün sağ, belə alqış dəyirmi biz Charlie üçün bilər.
Çox yaxşı.
>> Bütün sağ, belə nə daha yoxdur bu biz edə bilərsiniz deməkdir?
Belə ki, biz də etdik çıxır ki, bir neçə ağ yalançıdır
çox bir müddət.
Həqiqətən, o ki, simli çıxır Bu zaman bütün, həqiqətən deyil
se başına simvol ardıcıllığı.
Bu cür ki, daxilən edir.
>> Amma texniki danışan, simli bir biz daxilində elan data type
dünya asanlaşdırmaq üçün CS50 kitabxana sinif ilk bir neçə həftə.
Nə simli həqiqətən edir ünvanı haradasa RAM bir xarakter.
A string 123 kimi, həqiqətən, bir sıra ayırmaq olur ki, və ya 127,
bir simli ilə başlayır kompüter yaddaş.
>> Amma əks etdirmir simli, özlüyündə özünü.
Və biz bu aşağıdakı kimi görə bilərsiniz.
Mənə davam və açmaq edək arasında var ki, bəzi kodu
Bu gün mənbə kodu nümunələri.
Və mən irəli getmək və açılması üçün gidiyorum up, müqayisə-0.c, deyək.
Bu gedir ki, bir arabası proqramı aşağıdakı kimi həyata keçiriləcək.
>> Birinci.
Mən bir şey demək gedirəm.
Sonra davam gedən və alıram istifadəçi bir string almaq
ki, gələn uyğun.
Sonra bir daha demək gedirəm.
Sonra mən başqa almaq üçün gidiyorum istifadəçi string.
>> Və bildiriş, mən birini göstermesi alıram s adlı dəyişən strings və
Bu strings digər t adlı dəyişən.
İndi çox tələb etmək gidiyorum əsaslı, s təşkil əgər, t bərabərdir ki,
strings eynidir.
Siz eyni şeyi yazın.
Başqa, strings var deyil eyni şey.
>> Bütün sonra, biz input iki ints, iki halda chars, iki üzüb gedirdi, iki çiftler, hər hansı
Biz söhbət etdik məlumatları növləri Beləliklə, onları müqayisə etmək -
Biz bir müddət əvvəl çox bəyan etmişdir Xatırladaq Bunu deyil ki, çünki
tək bərabər işarəsi Əlbəttə tapşırıq operatoru.
Belə ki, bir səhv olardı.
>> Biz bərabər bərabər işarəsi istifadə, həqiqətən müqayisə edən
doğru bərabərlik üçün hər şeyi.
Amma bu buggy iddia edirlər.
Mən irəli getmək və sıfır müqayisə etsək, və sonra dot çizgi sıfır müqayisə etməyin.
Və mən hello, deyək ki, yazın.
Və sonra nin yenidən salam demək bildirin.
Sanki eyni şey, kompüter Mən müxtəlif şeylər çap iddia edir.
>> İndi bəlkə mən bir şey mistyped.
Mən ad bu dəfə yazın edəcəyik.
Mən demək, salam.
Salam.
Bu, hər bir zaman müxtəlif var.
>> Yaxşı, niyə ki?
Nə həqiqətən davam başlıq altında?
Yaxşı, nə həqiqətən altında davam başlıq sonra dizesidir
Mən məsələn ilk dəfə çap sözü, əlbəttə, salam edir.
Amma biz altından bu əks təqdirdə başlıq, xatırlayıram ki,
simli bir sıra edir.
Və biz keçmişdə olduğu kimi çox bildirib etdik.
>> Mən bu kimi ki, array çəkmək Belə ki, Ben olduqca bir şey təmsil etmək niyyətindədir
biz bir an əvvəl nə bənzər.
Və bir şey həqiqətən var da burada xüsusi.
Biz nə idi müəyyən etməyib hər simli sonunda?
Bəli, bu backslash sıfır olan təmsil yalnız yol,
sanki 00000000.
Bir sıra Səkkiz 0 bit.
>> Mən səmimi, bilmirəm Bundan sonra nə var.
Ki, yalnız bir dəstə daha çox RAM var mənim kompüter daxilində.
Amma bu bir sıra edir.
Biz əvvəl Diziler haqqında danışdı.
Və biz adətən Diziler haqqında danışmaq yeri sıfır olan kimi,
sonra bir, iki.
Amma bu yalnız rahatlığı üçün.
Və tamamilə nisbi deyil.
>> Həqiqətən olan yaddaş əldə etdiyiniz zaman kompüter, əlbəttə hər hansı bir var
2 milyard bəzi qəribə bytes potensial.
Yəni həqiqətən başlıq altında, bütün bu vaxt, bəli.
Bu, çox bracket sıfır ola bilər.
Amma altında daha dərin qazmaq əgər başlıq ki, həqiqətən
sayı 123 müraciət edir.
Bu ünvan 124.
Bu ünvan, 125-dir.
>> Və mən bu dəfə qıymaq etməyib.
Bu indi bir bayt var ayrı nə səbəbdən?
Bir char necə böyük?
A char yalnız bir byte edir.
Bir int adətən dörd bayt edir.
Mən bunu 123 etmişdir niyə ki var, 127, 131 və s.
İndi riyaziyyat sadə saxlamaq və yalnız müsbət 1 edin.
Və indi həqiqətən neler edir başlıq altında edir.
>> Əgər bu kimi bir şey elan zaman string s, bu əslində -
O çıxır -
char ulduzu.
Star, əlbəttə, deməkdir ünvanı, aka pointer.
Belə ki, bir şey ünvan var.
Nə üçün ünvan edir?
>> Yaxşı -
Mən çox bilərsiniz olan yalnız bir deyiləm əhəmiyyətli nöqtə edilməsi, və ya düşünmək alıram
Mən edilməsi alıram.
Belə ki, string -
kədərli şey bir monitor var sağ orada mən
olduğunu gördük bilər.
>> Bütün sağ, belə simli s nə Mən əvvəllər elan etdi.
Amma bu, bir az sayəsində çıxır ki, CS50 kitabxana sehrli, bütün bu
zaman simli sanki var char star olmuşdur.
Ulduzu yenidən deməkdir göstərici və ya ünvanı.
Bu çökəkliklərdir var ki, söz char bu vasitələri
bir xarakter ünvanı.
>> String adlanır almaq və mən yazın Belə ki, əgər H-E-L-L-O, almaq nə indi təklif
simli sanki bütün qaytarılması edilmişdir Bu dəfə biz etdik deyil, baxmayaraq ki,
dünya oversimplified?
String həqiqətən almaq nə onun qaytarılması dəyər kimi qayıtmaq?
>> Bu halda 123, məsələn.
Biz əvvəllər string almaq bildirib ki, sonra sadəcə bir simli, bir ardıcıllıqla qaytarır
simvol.
Amma bu ağ yalan bir az var.
Yol string həqiqətən işləyir almaq başlıq altında olur bir
istifadəçi string.
Bu simvol plops yaddaş o növləri.
Bu sonunda bir backslash sıfır qoyur simvol həmin ardıcıllıqla.
>> Amma sonra simli nə əldə edir sanki geri?
Bu sözün nın ünvanı qaytarır RAM çox ilk bayt ki,
ki gücü üçün istifadə olunur.
Və qaytarılması ki, yalnız çıxır ki, bir ünvanı
simli ilk karakter ki, hamısını tapmaq üçün kifayət qədər
simli.
>> Başqa sözlə, simli yoxdur almaq 123, 124 və 125 qayıtmaq üçün.
Bu, mənim uzun vermək yoxdur ki bayt bütün siyahısı
Mənim string istifadə edir.
Çünki, onlar geri bütün geri istəyirik.
Mən ilk ünvan iki əsaslı simli başa harada həyata rəqəm bilər.
Necə?
>> Xüsusi null xarakteri, sonunda sıfır backslash.
Belə ki, başqa sözlə, əgər Siz ətrafında keçə -
dəyişənlərin daxili -
bir char ünvanı və siz güman hər hansı bir simli sonunda hər hansı ki,
biz insanlar kimi simvol ardıcıllığı siz güman əgər strings hesab edirəm ki,
var hər hansı belə simli sonunda bir backslash sıfır, siz qızıl istəyirik.
Həmişə tapa bilər bir simli sonunda.
>> İndi nə həqiqətən sonra olacaq Bu proqram haqqında?
Niyə bu proqram deyil, müqayisə-0.c, arabası?
Həqiqətən nə müqayisə olunur?
Bəli?
>> TƏLƏBƏ: [işitilemez].
>> DAVID Malan: Eynilə elə.
Bu yerlərdə müqayisə oldu strings edir.
Istifadəçi salam bir ildə yazılmış Belə ki, əgər Mən kimi, yaddaş başa bilər
bu kimi axtarır.
Yenə salam istifadəçi sonra növləri varsa, lakin yenə string almaq axtararaq, C
Siz xüsusilə ağıllı öyrətmək halda şifrəsini yazaraq ağıllı olmalıdır.
>> C -
daha ümumi və kompüter -
siz salam yenə sözü yazın əgər, siz almaq olacaq bilirik.
Siz yalnız ikinci sıra almaq olacaq yaddaş ki, bəli, ola olur
H-E-L-L-O saxlanılması və s.
>> Bu eyni baxmaq olacaq bizim insanlar, lakin bu ünvanı
123 ola bilər.
Bu, sadəcə belə olur ki, əməliyyat sistemi bir mövcud vardır
yerdə məsələn space -
ixtiyari bir şey demək edək, bu kimi yer 200 manatdır.
Və bu yeri 201-dir.
Və bu yeri 202-dir.
Biz bu olduğu heç bir fikrim yoxdur yaddaş olacaq.
>> Bəs bu nə deməkdir ki, s nəticədə saxlanılmalıdır gedir?
Sayı 123.
, T saxlanılmalıdır neler bu ixtiyari nümunə?
Sayı 200.
Və o deməkdir bütün açıq-aydın deyil 123 200 bərabər deyil.
Və bu heç vəziyyətdə əgər doğru ilə qiymətləndirir.
Get string müxtəlif istifadə edir, çünki yaddaş chunks hər dəfə.
>> İndi biz bu yenidən görə bilərsiniz başqa nümunə.
Mənə davam və surəti 0.c açmaq edək.
Mən bu misal gedir iddia cəhd - lakin uğursuz - iki strings surəti
aşağıdakı kimi.
>> Mən bir şey demək gidiyorum istifadəçi.
Mən sonra almaq üçün gidiyorum simli və s zəng.
İndi mən burada, bu onay edirəm.
Biz bu bir müddət geri bildirdi.
Lakin zaman, simli geri null almaq bilər digər xüsusi xarakteri, və ya xüsusi
simvolu edək deyirlər.
Bu yaddaş varsa.
>> Məsələn, istifadəçi həqiqətən əgər bir dəhşətli çətin və növləri olan
at simvol sayı klaviatura və Xit daxil edin.
Simvolların ki sayı yalnız mümkün olmadıqda, crazy nə üçün RAM uyğun
səbəbi, həmçinin simli güc almaq çox yaxşı null qaytarın.
>> Və ya proqram özü bir çox edir, əgər digər əşyalar və yalnız var
get simli üçün kifayət qədər yaddaş başarılı olmaq üçün son ola bilər
null qaytarılması up.
Lakin daha dəqiq olsun Bu nə kimi.
S data type həqiqətən nədir?
Char ulduzu.
>> Belə ki, indi biz peel bilərsiniz çıxır null təbəqəsinin geri.
Çıxır, null deyil - Bəli, açıq-aydın xüsusi rəmzidir.
Amma həqiqətən nədir?
Həqiqətən, null yalnız rəmzidir ki, biz insanlar, eləcə də sıfır təmsil etmək istifadə edin.
>> C müəllifləri və kompüter Belə ki, Ümumiyyətlə, il əvvəl qərar
ki, bilirik.
Niyə biz təmin etmir ki, istifadəçi yoxdur data heç, heç, daim
bye sıfır saxlanılır?
Hətta mənim ixtiyari nümunə əvvəl, mən nömrələmə start vermədi
sıfır bayt.
Mən bir başladı.
Mən dünyada insanlar bilirdi Çünki sıfır saklı etmək qərarına gəldik
hər RAM kimi byte xüsusi bir şey.
>> Səbəbi olan zaman istədiyiniz bir şey yanlış keçmişdir ki, siqnal
URL ilə bağlı, siz geri null - başqa sıfır kimi tanınan -
və heç bir var bilirik, çünki aydın, ünvanı sıfır data legit
bir səhv deməkdir.
Və biz, konvensiya ilə yoxlamaq görə null qaytarılmasını və bir şey üçün
Bu hallarda bir kimi.
>> Indi aşağıya fırladın əgər, bu, yalnız sonra bir səhv yoxlanılması yalnız halda
bir şey [səhv getdi? zaminə?]
cəmi və proqram çıxın erkən qaytarılması ilə.
Bu xətt indi yeniden bilər bu kimi, bu nə deməkdir?
Sol tərəfində, mənə başqa vermək bir xarakter, və t zəng etmək üçün göstərici.
Mən əsasən, t daxilində nə saxlanılması am kod bu bir xətt haqqında?
>> Mən yer saxlanılması alıram.
Xüsusilə yeri ki, s idi.
Istifadəçi salam ildə yazılmış, və əgər ilk salam başa olur
Burada, sonra sayı 123 almaq geri gələcək
Simli və saxlanılmalıdır -
Bayaq dediyim kimi -
s.
>> İndi başqa bir pointer bəyan edərkən bir char və zəng t, sayı nə
sözün ildə başa gedir hekayə görə t?
123 belə.
>> Belə ki, texniki indi, həm də t dəqiq işarə olunur
yaddaş eyni chunks.
Beləliklə, mən indi bunu gidiyorum nə görürsünüz bu proqram arabası olduğunu sübut edir.
>> Birinci Mən iddia gidiyorum bir çap f, hərflə
simli surəti.
Sonra bir az etmək gidiyorum yoxlanılması səhv.
Mən əmin gedirəm.
Gəlin simli t əmin olun ən uzunluğu sıfırdan böyük,
belə bir xarakter var var həqiqətən kapitallaşması.
>> Və sonra bu geri bilər əvvəlki nümunələrdən.
Yuxarı 2 - olan ki, ctype.h faylı.
T bracket sıfır mənə sıfır verir simli t xarakter.
Ki, eyni dəyər yuxarı və 2, Əlbəttə, bu, böyük dönüşür.
>> Belə ki, daxilən bu xətt vurğulanan kodu ilk hərflə edir
t məktubu.
Lakin bu, daxilən, hərflə deyil s ilk məktubu.
Siz irəlidə düşünür istəyirsinizsə Lakin, nə am Bu proqram çalıştırdığınızda haqqında görmək üçün
və orijinal həm çap s, və sözdə surəti, t?
>> Onlar faktiki olaraq eyni olacaq.
Və niyə onlar eyni olacaq?
Onlar işarə edirik həm tam eyni şey.
Belə ki, bunu edək.
>> Surəti sıfır olun.
OK tərtib edir.
Mənə surəti sıfır run edək.
Mənə salam kimi bir şey yazın edək bütün kiçik sonra Enter düyməsini basın.
Və bu iddia edir ki, orijinal s həm surəti həqiqətən eynidir.
>> Beləliklə, nə həqiqətən burada oldu?
Mənə bu şəkil yalnız yenidən edək bir hekayə demək
az fərqli yol.
Nə həqiqətən altında davam Mən kimi bir şey elan zaman başlıq
char start s, və ya simli s, Mən göstərici alıram -
dörd bayt olmaq olur ki, CS50 cihaz ilə
və kompüter bir çox.
Və mən bu s zəng etmək üçün gedirəm.
Bu hal-hazırda var Bəzi unknown dəyəri.
>> Bir dəyişən elan zaman, halda özünüzü, orada olan bir dəyər qoymaq
var bilir.
Bəzi təsadüfi ardıcıllıqla ola bilər əvvəlki icrasından bit.
Beləliklə, mən, kod mənim xətti almaq nə zaman simli, və sonra geri saxlamaq
s dəyəri birtəhər string almaq -
və biz nəticədə almaq necə geri soymaq will string işləri, birtəhər bir ayırır
yəqin ki, görünür ki, array bu kimi bir bit.
H-E-L-L-O, backslash sıfır.
>> Bu bir ünvan ki, güman edək 123 yalnız ilk ardıcıllıq.
Beləliklə də, simli yekunları almaq orada line vurğuladı, bu qaytarır
numara 123, bildirib.
Beləliklə, nə həqiqətən burada s daxilində gedir?
>> Yaxşı, həqiqətən nə gedir içərisində s 123.
Amma səmimi, bir az alıram bu ünvanlar hamısını qarış
Bu ixtiyari ədəd bütün.
123, 124, 127.
Elə əslində sadələşdirmək qoy Dünyanın bir az.
>> Biz səmimi, göstəricilər haqqında danışmaq zaman, üçün Bizi insan, olan heck yerləşir umurunda
şeylər yaddaş var?
Tamamilə ixtiyari var.
Bu necə asılı olacaq çox istifadəçi var RAM.
Bu gün də asılı olacaq bəlkə, proqram run və
nə daxil istifadəçi verir.
Biz əhəmiyyətsiz detalları yaşayış istəyirik.
>> Belə ki, gələk üz mücərrəd və ki, Bu kimi bir kod line çalıştırdığınızda,
char ulduz S qaytarılması alır get simli dəyəri.
Niyə biz yerine biz nə çəkmək yoxdur bu sanki bir göstərici zəng edin
bir şey işarə?
Beləliklə, mən olduğunu indi iddia bir göstərici var -
başlıq altında bir ünvan var.
Amma bu, yalnız işarə oldu də ilk byte
string ki, geri oldu.
>> Mən indi burada kodu qayıtmaq varsa, nə bu xətt üzərində olacaq?
Yaxşı, indi bu vurğulanan xətti, Mən yəqin digər bəyan edirəm
t adlı dəyişən.
Ancaq bu da bir göstərici ki, mən gedirəm dəqiq, nəzəri, kimi cəlb
eyni ölçüdə qutusu.
Və mən bu t zəng etmək üçün gedirəm.
>> İndi yenə kodu geri əgər, Mən t s daxilində saxlamaq, zaman
Mən texniki nə am t daxilində qoyulması?
Yaxşı texniki, bu sayı 123 idi.
Belə ki, həqiqətən, Mən yazılı olmalıdır orada sayı 123.
Amma İT yüksək səviyyədə götürək.
t, sadəcə bir göstərici olduqda, daxilən, yalnız edir.
Ki, olan oldu ki, bütün var orada saxlanılır.
>> Belə ki, artıq son maraqlı xətləri kodu, mən, həqiqətən haqqında getmək zaman
sıfır karakter hərflə t, nə gedir?
Yaxşı, t bracket sıfır indi işarə edir nə xarakteri, ehtimalla?
>> Bu h işarə oldu.
Çünki t bracket sıfır -
Xatırladaq ki, bu köhnə sintaksis edir. t bracket t, t simli əgər sıfır yalnız deməkdir
bracket sıfır sıfır almaq deməkdir ki, güc xarakteri.
Həqiqətən o deməkdir ki, nə Bu array getmək edilir -
və bəli, bu, 123 ola bilər Bu 124 ola bilər.
Lakin bütün nisbi var, xatırlayıram.
Bir sıra söhbət olduqda, biz söhbət üstünlüyü
nisbi göstəriciləri.
>> Və indi biz yalnız kəsb edə bilər ki, t bracket sıfır h.
Hesab edirəm ki, 2 yuxarı zəng Belə ki, nə var həqiqətən böyük hərflə yerləşir bunu
böyük H. üçün kiçik h Amma əlbəttə, s nədir?
Eyni darn string işarə oldu.
>> Belə ki, bu baş edilmişdir ki, bütün Bu kodu indiyə qədər.
Belə ki, ima nə var?
Biz bu iki problemi necə düzeltirim?
Biz faktiki strings müqayisə edirsiniz?
>> Yaxşı daxilən, necə ki, iki müqayisə haqqında getmək
doğru bərabərlik üçün strings?
>> Bu nə deməkdir, əgər iki strings bərabər var?
Aydındır ki, onların ünvanları ki, ki, bir aşağı, çünki yaddaş bərabər
səviyyədə həyata ətraflı.
Bütün simvol eynidir.
Mənə təklif edək və mənə təqdim bildirin compare.c versiyası birində
Burada, belə müqayisə-1.c.
>> Biz hələ ki, mənə təklif edək s adlı göstərici və bu Store
get simli dəyəri qaytarın.
T ilə eyni şey edək.
Belə kodu heç biri fərqlidir.
Mən bir az əlavə etmək gidiyorum İndi yoxlanılması daha səhv.
Belə ki, indi biz geri peeling növ olduğunu nə simli CS50 bu qatları
əslində, biz daha anal lazımdır əmin edilməsi barədə biz sui-istifadə etmirik
null kimi yalnış dəyərlər.
>> Beləliklə, mən yalnız yoxlamaq üçün gedirəm.
S bərabər null deyil və t deyilsə bərabər null ki, biz OK istəyirik deməkdir.
String almaq qıymaq etmədi alın ya həmin tellər.
Və bəlkə də, indi tapmaq olar nə STR CMP güman edir?
Simli müqayisə.
>> Sizdən əvvəl java proqram var Belə ki, bu də bərabər üsulu kimi
simli sinif.
Amma olan sizin üçün əvvəl proqramlaşdırılmış,
bu yalnız bir c funksiyası var.
Bu gəlmək olur fayl string.h çağırıb.
Bəyan edir harada.
>> Və simli müqayisə -
Mən, həqiqətən, onun istifadəsi unutmaq, amma ki, ağla heç.
Biz nə edə Xatırladaq ki, insan, müqayisə çevir.
Və bu yetişdirmək gedir Linux proqramçılar dərslik.
Və bu, səmimi, bir az sirli var.
Amma Yep, burada görə bilərsiniz.
Mən string.h daxil var.
>> Və bu "təsviri altında burada deyir Simli müqayisə funksiyası müqayisə
iki strings S1 və S2. "Və S1 və S2 yəqin iki
dəlilləri da keçdi
Mən, həqiqətən, xatırlamıram nə İnşaat, ancaq indi hiss -
zaman və artıq bu görmüş ola Siz man pages istifadə etdik, əgər
bütün var -
ki, char star yalnız sinonimidir simli ilə.
>> Belə ki, iki strings, S1 müqayisə və S2, və az bir tam qaytarır
çox və ya bərabər və ya sıfırdan böyük S1 aşkar edildikdə, müvafiq olaraq, olmaq
daha az və ya uyğun, və ya S2 daha çox ola bilər.
Yalnız söyləyən bir çox mürəkkəb yol ki, simli yekunları müqayisə
sıfır iki strings daxilən əgər üçün eyni, xarakter
xarakter üçün xarakter.
>> Bu mənfi əgər qaytarır s, əlifba sırası ilə, ehtimal olunur
t əvvəl gəlib.
Və ya bir müsbət rəqəmlər əgər qaytarır s t sonra gələcək ehtimal edilir
əlifba sırası ilə.
Belə ki, bu sadə funksiyası ilə ola bilər Siz, məsələn, bir növ
sözləri bütün dəstə?
>> Belə ki, bu yeni versiyası, mən gedirəm davam və compare1 etmək.
Dot çizgi bir müqayisə.
Mən aşağı halda salam yazın lazımdır.
Mən salam yazın gidiyorum daha bütün kiçik edir.
Və təşəkkürlə indi həyata keçirir Mən eyni şeyi yazılmış.
>> Eyni zamanda, əgər mən aşağı salam yazın halda və yuxarı halda HELLO və
onları müqayisə, mən tipli fərqli şeylər.
Yalnız Çünki ünvanları var müxtəlif, lakin biz karşılaştırdığınızdan
təkrar müxtəlif simvol.
>> Yaxşı biri getmək və düzeltmek bildirin indi başqa problem.
Mənə versiyasını bir qədər açmaq edək İndi müraciət edən sənədin surəti,
Bu məsələ kimi izləyir.
Və bu bir baxmaq olacaq bir az daha kompleks.
Amma nə problem haqqında düşünməyə əgər biz həll etmək lazımdır, inşallah bu olacaq
İndi yalnız bir anda sil.
>> Belə ki, bu ilk line, char start t ki, layman Terms kimsə təklif edə bilər
Bu xətt burada nə deməkdir?
Char star t, bunu nə?
>> Yaxşı.
Bəzi pointer yarat yaddaş spot.
Və mənə bir az saflaşdırmaq edək.
Mağaza edəcək bir dəyişən elan yaddaş bəzi char ünvanı, yalnız
bir az daha düzgün olmalıdır.
>> OK, belə ki, indi sağ, mən var Bu funksiyaların bir görməmişəm
əvvəl malloc.
Amma ki, nə demək ola bilər?
Yaddaş ayrılması.
>> Belə ki, biz indiyə qədər, çıxır həqiqətən güclü bir şəkildə idi yoxdur
əməliyyat sistemi tələb Mənə bir yaddaş verir.
Əksinə, biz indi adlı bir funksiyası var tam olaraq ki malloc.
Bu bir az olsa da yayındırma hazırda Qeyd ki,
iki parantez arasında yalnız bir sıra olacaq.
Mən sual Yığdığınız sonra harada işarələri bir sıra ola bilər.
>> Və sayı, deməkdir mənə 10 bayt verir.
Mənə 20 bayt verin.
Mənə 100 bayt verin.
Və malloc üçün əlindən gələni edəcək əməliyyat sistemi xahiş -
Bu halda Linux, -
hey, onların 100 bytes var mövcud RAM?
Əgər belədirsə, mənə o bayt qayıtmaq onlardan ünvanı qaytarılması
bəlkə o bayt?
Bir ilk.
>> Belə ki, burada çox - bu üstünlük təşkil edir C, sen istənilən vaxt
URL ilə məşğul?
Siz demək olar ki, həmişə məşğul edirik İlk belə ünvan, nə qədər böyük
Əgər olunur yaddaş yığın belə danışmaq, geri verdi.
>> Belə ki, gələk burada dalış.
Mən necə ayırmaq çalışıram çox bayt, məhz?
Yaxşı.
S Simli uzunluğu - Haydi konkret misal edin.
S salam varsa, H-E-L-L-O, nə var s simli uzunluğu, açıq-aydın?
Belə ki, beş deyil.
Amma niyə bir plus 1 edirəm?
Niyə altı bayt istəyirəm əvəzinə beş?
Null xarakter.
>> Mən bu off tərk etmək istəmirəm xüsusi null xarakter.
Çünki mən Salam protokolların və əgər yalnız H-E-L-L-O edirəm, lakin qoymaq deyil
xüsusi xarakteri, kompüter şans, bir backslash tərəfindən ola bilər
mənim üçün sıfır.
Və mən anlamağa çalışıram, əgər surəti uzunluğu, mən hesab edə bilər ki,
20 simvol uzunluğunda, və ya bir milyon Mən heç vaxt, əgər uzun simvol
bir backslash sıfır edib.
>> Beləliklə, biz altı bayt saxlamaq lazımdır H-E-L-L-O, backslash sıfır.
Və bu yalnız super anal olmalıdır.
Unuda Güman nə bir char və ölçüsü.
Biz onun bir byte deyərək saxlayın.
Və adətən edir.
Nəzəri olaraq, bir şey ola bilər fərqli bir Mac və ya üzərində, müxtəlif
müxtəlif PC.
>> Bu operator var həyata Belə ki, çevrilir sizeof deyilir ki, onu keçmək əgər
məlumat tipli adı - kimi char və ya int və ya float -
necə çox dinamik, sizə xəbər verəcəkdir bytes bir char Bu edir
xüsusi kompüter.
>> Belə ki, bu səmərəli yalnız dəfə 1 və ya deyən kimi
bütün dəfə heç bir şey.
Amma yalnız super anal olmaq yapýyorum yalnız halda bir char fərqlənir
Sizin kompüter qarşı mina, bu yolda riyaziyyat həmişə kontrol gedir.
>> Nəhayət, aşağı burada, null yoxlamaq olan həmişə yaxşı təcrübə - yenə,
biz göstəricilərinə ilə məşğul olduğunuz heç bir zaman.
Malloc verə olmasaydı Mənə altı byes - olan
ehtimal, ancaq yalnız halda -
dərhal bir qaytarın.
İndi, davam və surəti simli aşağıdakı kimi.
Bu, tanış sintaksis edir müxtəlif rol olsa da.
>> Mən irəli getmək və simli almaq üçün gidiyorum s uzunluğu n saxlayın.
Mən sonra i bərabərdir dən təkrarlamaq üçün gidiyorum , və n, o cümlədən qədər sıfıra
və ya daha çox bərabərdir.
Hər iteration tərəfdən, mən qoymaq ki, ki, Ith ilə s Ith xarakter
t xarakter.
>> Beləliklə, nə həqiqətən altında davam burada başlıq?
Bu halda, məsələn, s -
Mən söz H-E-L-L-O yazdığınız və backslash sıfır var.
Və yenə bu s burada işarə edir.
Və indi t.
>> Bu indi işarə edir yaddaş surəti, sağ?
Malloc mənə bütün verdi yaddaş yığın.
I əvvəlcə nə bilmirəm Bu yerlərdə hər hansı.
Beləliklə, mən bu kimi düşünmək gidiyorum sual işarələri bütün dəstə.
>> Amma tezliklə başlamaq kimi sıfırdan loop s, t uzunluğu ilə qədər haqqında
bracket sıfır və t bracket 1 -
və mən indi bu qoymaq lazımdır hava haqqında -
t bracket sıfır və s bracket sıfır demək Mən çıxarmaq olacaq alıram ki,
burada iteratively h, E-L-L-O. Plus Mən plus, çünki
1 backslash sıfır.
>> Belə ki, indi müqayisə-1.c halda, sonunda, mən çap əgər
t kapitallaşdırılması, biz olmalıdır s dəyişməz olduğunu görürük.
Mənə indi irəli getmək və bunu edək.
Belə copy1 edir.
Dot çizgi copy1.
Mən salam daxil edin yazın gedirəm.
İndi yalnız surəti görürsünüz kapitallaşdırılmış edilmişdir.
Mən, həqiqətən, var iki yaddaş chunks.
>> Təəssüf ki, bəzi olduqca edə bilərsiniz Burada pis və olduqca təhlükəli şeylər.
Mənə indi burada nümunə qoparmaq edək, ki, bizə bir neçə nümunə verir
müxtəlif satır.
Belə ki, yalnız daxilən, burada birinci xətti kodu, int ulduz x, elan edir
x adlı dəyişən.
Və data type var ki, dəyişən?
Ki, dəyişən data type nədir?
Bu cliffhanger deyildi.
>> Bu data type int ulduzdur.
Belə ki, nə deməkdir? x olacaq bir int ünvanı saxlamayın.
Kimi sadə.
Y saxlamaq üçün gedir bir int ünvanı.
Üçüncü xətt nədir kodu var bunu?
Bu ayrılması necə çox bytes çox güman ki?
Dörd.
Çünki bir int ölçüsü edir ümumiyyətlə dörd, dörd malloc verir
mənə bir yığın üçün ünvan geri yaddaş, onun bayt ilk
x indi saxlanılır.
>> İndi biz tez bir az hərəkət edirik.
Star x nə deməkdir?
Bu ünvana getmək deməkdir və nə orada sayı qoymaq?
Sayı orada 42 qoyun.
Star y y da nə getmək deməkdir və orada 13 saylı qoydu.
>> Amma bir dəqiqə gözləyin.
An y nə deməkdir?
Nə ünvan y saxlanılması var?
Biz, bilmirəm?
Biz bir dəfə atama istifadə heç vaxt y cəlb operator.
Belə ki, y kimi ikinci xətt üzrə elan kod yalnız bir zibil dəyər, böyük bir
sual işarəsi belə danışmaq.
Bu təsadüfi işarə ola bilər yaddaş şey, hansı
ümumiyyətlə pis.
>> Belə ki, tezliklə biz orada line hit star y, pis bir şey 13 bərabərdir
çox pis bir şey haqqında Binky başına.
Belə başa neler baxaq Bu dəqiqədə burada Binky başına
və ya baxın.
>> [Video playback]
>> -Hey, Binky.
Uyan.
Bu göstərici əyləncə üçün vaxt var.
>> -Ne var?
Göstəricilərinə haqqında məlumat əldə edin?
Oh, goodie.
>> -Yaxşı, başlamaq üçün, biz istəyirik tapmaq bir neçə göstəricilərinə tələb edir.
>> -OK.
Bu kod iki göstəricilərinə ayırır olan integers qeyd edə bilərsiniz.
>> -Yaxşı, yaxşı, mən iki göstəricilərinə baxın.
Amma onlar olmaq görünmüyor bir işarə.
>> -Bu doğru deyil.
Başlanğıcda göstəricilərinə deyil bir şey işarə edir.
Onlar qeyd şeyi deyilir pointees və onların yaradılması bir
ayrı-ayrı addımdır.
>> -Oh, sağ, doğru.
Hesab edirəm ki, bilirdi.
Bu pointees ayrıdır.
Belə ki, necə bir pointee ayrılması bilərəm?
>> -OK.
Bəli, bu kodu yeni integers ayırır pointee və bu hissəsi x edir
onu qeyd etmək.
>> -Hey, yaxşı görünür.
Belə ki, bir şey etmək.
>> -OK.
Mən dereference göstərici x saxlamaq üçün lazımdır onun pointee daxil sayı 42.
Bu oyun üçün, mən sehrli lazımdır dereferencing və çubuq.
>> Dereferencing of-Sizin sehrli çubuq?
Ah, böyük deyil.
>> -Bu kodu kimi görünür.
Mən yalnız sayı qurmaq və lazımdır -
>> -Hey, baxın.
Orada gedir.
Belə ki, x aşağıdakı bir dereference bunu onun pointee daxil olmaq üçün ok.
Bu halda, burada 42 saxlamaq üçün.
Hey, sayı saxlamaq üçün istifadə edin Digər göstərici vasitəsilə 13 y.
>> -OK.
Mən yalnız Y burada getmək və edəcəyik sayı 13 qurmaq almaq.
Və sonra da çubuq almaq dereferencing və yalnız -
Whoa!
>> -Oh, hey.
Bu iş deyildi.
Binky, demək, mən düşünmürəm y dereferencing, yaxşı bir fikirdir
ki, pointee yaradılması çünki ayrı bir addımdır.
Ümidvaram ki, biz heç bunu düşünmürəm.
>> -Hmm.
Point Yaxşı.
>> -Bəli, biz göstərici y ayrılıb.
Amma biz onu müəyyən heç vaxt bir pointee işarə edir.
>> -Hmm.
Çox müşahidəçi.
>> -Hey, siz aradığınız orada yaxşı, Binky.
Siz y xal belə ki düzeltmek x eyni pointee üçün?
>> -Tabi.
Mən mənim sehrli çubuq istifadə edəcəyik pointer təyin.
>> -Bir olacaq əvvəl kimi problem?
>> -No.
Bu pointees toxunmaq deyil.
Bu, sadəcə qeyd etmək bir pointer dəyişir başqa eyni şey.
>> -Oh, mən görürəm.
X eyni yerə İndi y göstərir.
Belə ki, gözləyin.
İndi y müəyyən edilir.
Bu pointee var.
Beləliklə, siz çubuq cəhd edə bilərsiniz yenidən dereferencing və
artıq 13 göndərəcək.
>> -OK.
Burada gedir.
>> -Hey ki, oldu.
İndi y işləri dereferencing.
Və göstəricilərinə bölüşmək çünki bir pointee, onlar
həm də 13 oldu.
>> -Bəli.
Paylaşma.
Neyse.
Beləliklə, biz artıq keçid yerlərdə gedir?
>> -Oh, baxmaq.
Biz zaman bitti.
>> -Amma -
>> -Yalnız üç xatırlayıram pointer qaydaları.
Bir nömrəli, əsas strukturu bir göstərici var.
Və bir pointee üzərində göstərir.
Amma pointer və pointee ayrıdır.
Və ümumi səhv edir bir göstərici qurmaq, lakin
bir pointee verilmiş unutmayın.
>> Sayı iki, pointer dereferencing başlayır göstərici və aşağıdakı onun
arrow üzərində pointee daxil olmaq üçün.
Biz bütün Bildiyiniz kimi, bu, yalnız işləri var geri alır bir pointee edir
bir nömrəli qayda.
>> Sayı üç pointer təyin edir bir pointer və dəyişikliklər onu qeyd etmək
başqa göstərici eyni pointee.
Belə ki, köçürüldükdən sonra, iki göstəricilərinə olacaq
Eyni pointee işarə edir.
Bəzən paylaşım deyirlər.
Və həqiqətən, o var bütün var.
Xudafiz Bye.
>> [END video playback]
>> DAVID Malan: göstəricilərinə belə daha çox, Binky gələn həftə daha çox.
Biz bazar ertəsi görəcəksiniz.