ALLISON BUCHHOLTZ-AU: Hei, toată lumea. Bine ati venit la pct. Astăzi este doar o să fie quiz revizui pentru testul pe miercuri. Sper ca toată lumea își amintește că ei au un test de miercuri. Și dacă nu, ei bine, acum ai fost amintit. Deci, miercuri asigurați-vă că apar pentru clasa sau alte cazari la fel de necesar. Voi vor fi minunat. O să fie grozav. Și am de gând să fac tot ce pot pentru a vă ajuta să se pregătească astăzi pentru testul dumneavoastră acum. Și, de asemenea, în cazul în care nu știu, există o sesiune de revizuire larg curs astăzi, la ora 07, în Laboratoare de Nord-Vest B103 cameră. Poți să-mi văd din nou, pentru un bis ca Eu voi conduce o parte din acea sesiune de revizuire de asemenea. Deci, dacă nu puteți obține destul de mine Acum, puteți veni din nou în seara asta. Toate, astfel prima lucruri drepte primul. Doar câteva sfaturi test înainte de a ne se arunca cu capul de fapt, în a comentarii. Deci, ca orice examen, practică te va ajuta cu siguranta. Există examene din trecut șase sau șapte ani pe acolo, astfel încât o mulțime de practică Material pentru voi să aibă. Și, de fapt, astăzi este de fapt doar va fi merge pe orice subiect că voi aveți întrebări cu privire la fel de bine ca de lucru prin probleme de practică de la test la zero. Așa că am să vomit test de zero de anul trecut pe aici, și putem lucra prin orice probleme că voi ar dori să. Deci, practica. Vei începe să faci asta azi. Cod pe hârtie. Deci da, în cazul în care toată lumea ar putea obține efectiv hârtie, că va fi mare, pentru că tu nu ești Va trebui computerul pe examen și scrierea de cod de mână este adesea mult mai dificil decât ați putea aștepta. V-ați obișnuit doar văzându-l și introduceți-l, și va trebui compilator pentru a te ajute cand ai erori, dar tu nu te că pe examenul. Deci, este foarte important să efectiv fi în măsură să scrie cod, și că memoria musculara de a face se de mână, te va ajuta cu adevărat. Deci, ne apropiem un pic de aproape. E luni. Examenul este miercuri. Dar dacă aveți timp, cu siguranta lua una a examenelor de anul trecut sau an înainte, sub constrângerea timpului de o oră și jumătate. Doar knock out o oră și o jumătate de timp, și stai te jos, și doar locul de muncă prin problemele ca și cum ați fost de fapt lua-o, pentru că o din cele mai mari lucrurile pe care le auzi despre chestionare este că acestea sunt foarte lungi. Este o mulțime de materiale. Există o mulțime de întrebări, și cei mai mulți oameni nu pot duce. Știu că totul nu a terminat teste mele atunci când am luat clasa. Pe această notă, ca mai puțin secțiune confortabil, Înțeleg că acest curs este destinat pentru a satisface oameni de toate nivelurile. Întreaga Motivul pentru care te-ai împărțit mai puțin confortabil, undeva între, și mai confortabil este de a un fel de al face mai echitabil. Și dacă ești mai puțin confortabil, e nu este necesar în sine pentru a obține tot. Ca și în cazul în care ați fost asistent totul, v-ar probabil fie în partea mai confortabil. Deci, evident, nu vă bate prea tare dacă nu se poate termina examenul. Ia-o de la mine, nu am făcut-o. Sunt încă un concentrator. Încă ajuta preda cursul. Vei fi bine. Bine. Și, în fine, să dormi. Evident cu orice examen am spus mereu asta. Bucherie cu o noapte înainte și nu primesc nici somn nu not-- poate dacă asta lucreaza pentru tine, du-te pentru el. Dar pentru marea majoritate a oameni, obtinerea de somn, permițându odihna creierului și recupera înainte de a veni în pentru examen te va ajuta cu adevărat. De asemenea, va exista aproape fi cu siguranta bomboane la examen, deci trebuie sa te uiti cu nerăbdare să. Voi vor face mare. O să fie bine. Și acum, în următoarea oră și jumătate am va încerca și tu pregătești cât de bine pot. Deci, am slide-uri de la practic toate secțiunile până acum. Nu am de gând să treacă prin toate pentru că nu este posibil într-o oră și jumătate, precum și ca de lucru prin probleme practice. Deci, în loc Am o listă de subiecte. Acestea sunt toate lucrurile pe care am putea quiz pe. Dacă e ceva că într-adevăr sare care vrei să mergi peste, pe care le să mă duc peste conceptual, Pot încerca și da ai o privire de ansamblu acolo. Sau, dacă vrei să sari direct în a faci probleme practică împreună, putem face asta. Depinde de voi. Nu sunt atât de mulți dintre voi. Deci, este tot ce voi dori sa faceti. Vreau să fiu cel mai de ajutor spre voi. Așa că am să las să se uite doar. Audiența: Un lucru este graficul pe care le ține spune despre stiva si heap. Doar ideea din spatele că și ceea ce ar însemna asta. ALLISON BUCHHOLTZ-AU: Da, OK. Aceasta este tot drumul de la end, asa ca lasa-ma parcurge. Audiența: Noi nu trebuie să fă-o acum, dar orice. ALLISON BUCHHOLTZ-AU: A fost acolo anything-- asta. Este acest tip de neclar pentru oameni? Audiența: Da, în al doilea rând asta. Și putem, de asemenea, nu buffer overflow? ALLISON BUCHHOLTZ-AU: Buffer overflow? OK. Deci, buffer overflow este destul de ușor doar pentru a vorbi despre. Este practic tampon ai despre unii memorie matrice pe care o ai, nu? Noi de obicei, vorbim despre buffer overflow când nu ești de verificare cât de mult utilizatorul este de a pune în, nu? Iar ideea fiind cu buffer overflow este ele sunt punerea în măsura prea multe date pentru spațiul care le-ați alocat pentru ei, nu? Deci, dacă spui, da mi ceva mesaj, suntem presupunând că acestea sunt de gând să dea ne un mesaj lungime rezonabilă. Poate linii de un cuplu, fleacuri. Deci, noi nu verifica. În schimb, ei ne hrănesc într-o Întreaga carte e un mesaj, și se revarsă suma de spațiu pe care l-am alocat pentru acest lucru. Și ce se întâmplă este că ar putea suprascrie locuri pe care nu trebuia. Așa că știu profesorul Malan a spus ceva despre atacuri buffer overflow. Deci, asta e în cazul în care va introduce utilizator o anumită cantitate masivă de date în speranța că el a suprascrie dribleze sfârșitul tampon ta și înlocuiește something-- mă întreb Eu am acele diapozitive aici. Nu cred că avem aceste diapozitive aici. Dar de fapt el a suprascrie o parte din memorie care îi permite accesul a componentelor de pe computer că nu ar fi au în mod normal acces la. Cel mai mare lucru cu buffer overflow este doar să înțeleagă că se întâmplă atunci când nu sunt verificarea cât de mult ta utilizator este de a pune în. Atunci când nu sunt un fel de protejând împotriva. Și la mai simplă lucru, e doar utilizator ta introducerea unei cantități masive de date într-o încercare pentru a suprascrie o anumită siguranță porțiune de memorie. Asta e tot ce este. Deci, asta aici, stivă și grămadă. Practic tot acest lucru este este doar o reprezentare a memoriei și care sunt depozitate lucrurile. Asta e într-adevăr un fel de tot ce trebuie sa stiti. Cele mai mari lucrurile pe care trebuie să știți sunt that-- lasă-mă să văd dacă există o better-- aici. Deci, aceasta este stiva aici. Deci, stivă are de a face cu toate funcțiile că tu suni la un moment dat. Și ceea ce este important să ne amintim merge off de săptămâna trecută cu malloc este că nu aveți într-adevăr controlul necesar asupra acesteia. Totul depinde de când anumite Funcțiile sunt executare. Și atunci când acestea sunt de executare, ele au ceea ce se numesc cadre stiva care merge în sus aici. Deci, tot felul de se întâmplă fără nici o contribuție reală la tine. Poti scrie programul, și tu să-l executați, și stiva fel de nevoie îngrijire de sine ca are nevoie de. Deci, dacă în principal suni cub, care va fi trecut pe aici. Va crea un cadru. Dar nu e nimic ce faci în mod explicit pentru a crea acel cadru stivă, altele decât scrie funcția pentru a începe cu, OK? Ce este un fel de sub dvs. Controlul este heap cu malloc. Deci, ori de câte ori ceva malloc, luați memorie din heap. Și că este memoria pe care le au, în lipsa unui cuvânt mai bun, controlul explicit peste, pentru că aduc aminte cu malloc este practic acolo până spui altfel. Pentru cei dintre voi care secțiune uitat săptămâna trecută, e acolo pana se spune să plece. Acesta va fi acolo, cu excepția cazului în caz contrar, nu a spus. Deci, heap este doar ceva vă puteți gândi ca memorie că ai control asupra. Și acestea sunt doar două lucruri mari diferite. Altele decât că, nu ar trebui să aveți să vă faceți griji prea mult despre stivă și heap întrebări sau de obicei mai multe locații dacă aveți parametri locale sau o funcție ar fi pe stivă sau heap. În mod evident, în acest caz, ar fi stiva. Dacă sunteți mallocing ceva, în cazul în care se că vine de la? Heap. Dacă te uiți la teste de practică, cei sunt în general de tipul de întrebări pe care le au. Nu trebuie să vă faceți griji prea mult despre asta. Veți obține în mod mai explicit despre stivă și heap mai târziu sau în alte clase CS. Deci, având în doar un fel de idee generală despre ceea ce este aceasta va fi bun, pe care am doar un fel de trecut peste. Orice alte subiecte? Da? Audiența: Poți să mergi peste indicative din nou foarte repede? ALLISON BUCHHOLTZ-AU: Pointeri? Vrei conceptual listă indicii sau te antrenezi cu indicii? Audiența: Un fel de sintaxa. ALLISON BUCHHOLTZ-AU: Sintaxa? Da. OK, ne apropiem acolo. Da, deci acesta este doar un fel de ceva atunci când aveți o funcție recursive, de fiecare dată când această funcție este recursivă numit, se adaugă pur și simplu alt cadru stivă. Destul de mult un exemplu de modul în care nu prea au control asupra rame pe stack-ul tău. OK, pointer. În regulă, deci crearea de indicii. Amintiți-vă, e doar de tip stea. Deci, indiferent de tipul de date pe care ai de gând să fie îndreptată către. Deci, acest lucru ar fi un pointer la un int. Acest lucru ar fi un pointer la un char. Acest lucru ar fi un pointer la un float. Deci, este practic indiferent doriți să fie îndreptată către, stele este modul în care declara indicatorul, OK? Dar apoi, evident, devine un pic dificil atunci când aveți indicatorul sau ai juca orice. Deci, diferența de mare este atunci când sunteți declaring-- așa că avem some-- astfel aceasta ia ceva stea int. Deci, acest lucru este un pointer solicită x pentru un int, nu? Deci, amintiți-vă ce face acest lucru este acest lucru necesită sistem x. Și acest lucru se întâmplă pentru au unele adresa, nu? Așa că hai să spunem acest lucru este adresa noastră. Indicii dețin adrese. Deci, ceea ce acest spune este că, în acest Locul de amplasare, suntem stocarea unui int. Deci, un alt mod ne putem gândi aceasta este faptul că aceasta este un int. Nu am cu adevărat însărcinată nimic încă, dar e doar un int. Astfel încât să putem face este dacă noi nu stea x este egal cu 5, aceasta devine un 5, OK? Acest lucru spune du-te la orice x este arătând spre, deci du-te la această adresă și să-l egal cu 5. Așa că am atribui 5 la această adresă, nu? Și apoi, dacă faci acest lucru, acest lucru ne dă adresa de. Aceasta este adresa operatorului. Deci, ce este adresa lui x? Nu știm. Nu l-am alocat o adresă. Am putea spune că este some-- acum am dat ea o adresă, astfel încât adresa este 4. Și, de fapt, dacă trecem prin ceva ca aceasta, un fel de ceea ce am făcut. Deci, de lucru prin here-- mi se pare Aceasta vă ajută dacă scoate indicii. Dacă sunteți pe examen, am foarte recomanda desen cutii. Deci, această primă parte, int x este egal cu 5. Acest lucru înseamnă că doar avem niște punere în memorie care este de 5, nu? Și masa noastră aici ne spune că este la adresa 0x04. Și apoi ne-am crea unele pointer. Așa că haideți să rupe acest jos, unul câte unul. Deci, acest lucru creează unele caseta pentru un int, nu? O să dețină unii adresa de ea. Deci, acest lucru este un pointer. Și acest lucru creta este foarte mic. Deci, avem unele pointer aici. Și masa noastră ne spune care este adresa este 0x08. Rece. Și noi suntem atribuirea l la adresa de x. Amintiți-vă, indicii deține adrese, OK? Deci, dacă vrem să dețină x, avem pentru a utiliza operatorul adresa, care este ampersand, pentru a obține adresa de x, care, în acest caz, 0x04. Și apoi, dacă avem unii copie int, aceasta doar creează o altă cutie care deține o copie numita int. Și dacă am atribui-o astea-- Deci asta e referire. Deci, se spune du-te la orice adresă pointer deține. Pointer deține această adresă, deci vom merge pe aici, și spunem, OK, ce e în ea? E 5. Deci, copie devine 5. Face sens? Ce se întâmplă dacă am încercat să atribui aceasta doar pentru indicatorul. Ce pointer de fapt egal? Ar fi pur și simplu indiferent pointer conține, nu? Și apoi ce dacă am făcut acest lucru? Ce s-ar fi copia acum? Audiența: 0x08. ALLISON BUCHHOLTZ-AU: Da, Adresa de pointer noastre. Orice parte din acel care trebuie să fie re-explicate? Rece. Nu este cu siguranta un foarte problemă distracție pe unul testul pe care le putem peste faptul că vă oferă mai multă practică. Cei de la saptamana trecuta poate vă spun că nu a fost așa de rău. Avem printr-un întreg diagramă, și toată lumea a făcut mare. OK, așa că e listă de sintaxă de indicii. Cel mai mare lucru este intelegerea modului pentru a le crea, face referire, și adresa, OK? Rece. Orice alte subiecte înainte ne-am arunca cu capul în practică. De asemenea, dacă mergem prin problemele de practică și nu e ceva ce vrei un perfecționare pe, putem face asta. Ai ceva? Audiența: structs și liste postat. ALLISON BUCHHOLTZ-AU: structs și a listelor legate, OK. Așa structs. Noi de fapt de gând peste această seara asta prea. OK, așa structs. Structs sunt, practic, doar o modalitate de a ține mai multe valori de diferite tipuri. Deci, cu o serie suntem contractat pentru un tip de date. Oferta noastră trebuie fie să fie doar numere, sau pur și simplu să fie de caractere, sau pur și simplu să fie flotoare. Dar poate ai nevoie pentru a conține mai mult decât atât. Poate aveți nevoie pentru a hold-- dacă vorbești despre un elev, ai de gând să aibă casa lor, lor Număr de identificare, vârsta lor, în cazul în care trăiesc, dreapta? Și toate acestea sunt diferite tipuri de tipuri. Astfel încât să nu poate stoca cele toți într-o matrice. Deci, ce puteți face este de tine poate crea o struct, care vă puteți gândi ca dumneavoastră propriul tip de date cu caracter personal. Deci, în loc de a avea doar int și în loc de doar cu flotoare, poti avea un student tip care are toate aceste câmpuri în ea. Deci, modul în care ne inițializa structs noastre este-- de fapt deoarece scrisul meu este teribil, ne-am sunt de gând pentru trecerea la dactilografiere. Woo. OK, deci, dacă dorim să creăm o struct-- Mă duc să-l aici. Nerespectarea în principal, indiferent de pe care o vom folosi mai târziu. Deci, modul în care doriți să faceți este cu typedef struct. Și hai să numim acest student pentru că asta e ceea ce am fost utilizați. OK, deci înseamnă că ești typedef definirea unui nou tip, OK? Există nuanțe în când faci doar un struct, comparativ cu o struct typedef. Pentru toate punctele și scopuri, voi sunteți doar de gând să-și asume că sunt aproximativ la fel și drepți folosi typedef struct pentru acum. Va deveni mult mai evidente în ta următor P stabilit care sunt acele diferențe, dar nu cred că aveți nevoie pentru a vă faceți griji despre asta acum. Mi-ar mai degrabă te Știi cum să creați una, acces la ea, și să alocați [? valoare. ?] Un nou tip de struct, și suntem numindu-l elev. Deci, după ce am terminat crearea de acest lucru, pentru toate punctele de vedere, va avea un tip numit elev. Și vă puteți gândi la ea doar ca un tip ca un int, sau un flotor, sau un char. E doar un alt tip, OK? Deci, în aceasta, ce avem? Avem poate un nume. Deci, poate că ne dorim un nume șir. Și avem poate o int care este un act de identitate. Și avem o altă în care e numărul de telefon. Si ne-am lăsa some-- vedem. Ce altceva am putea avea? Vom avea unele șir la casa lui. Toate lucrurile pe care un student le are. Deci, acest lucru creează o struct acum. Deci, cum am putea crea un elev? Dacă avem o variabilă care este de gând să vorbesc despre Walker aici, așa că have-- suntem doar O să numesc acest Walker. Are nevoie de un tip. Care este tipul de? Audiența: Student. ALLISON BUCHHOLTZ-AU: Student. Deci, acest lucru creează doar un obiect poți cred că de asta este dotat cu toate aceste lucruri. Tocmai ai creat un elev Walker. Așa că acum trebuie să fie în măsură să atribuie toate astea, nu? Deci, nimeni nu amintesc cum am acces într-un struct? Audiența: Perioada. ALLISON BUCHHOLTZ-AU: Perioada Exact. Deci, dacă am vrut să atribui i un nume, am putea face asta. Evident, acest lucru ar be-- această parte de aici s-ar fie în principal, așa de fapt, lasă-mă să fac asta. Declare acest lucru de mai sus principal așa pe care o putem folosi în principal. Așa că acum vreau să fac ID-ul, și vom face doar câteva acolo, iar apoi vom atribui o casă. Bam. Rece. Deci, acum ar trebui să avem nevoie pentru acces ceva mai târziu on-- poate we-- dacă avem nevoie pentru a accesa ceva, hai să facem un act de identitate copie int. Și vreau să copiați ID-ul lui Walker în asta. Cum s-ar putea să o fac? Ai nevoie de a accesa în cadrul Walker struct să [? du-te la asta?] [? E?]. Și în același fel în care ne-am atribuit-o aici, cum am putea accesa atunci când vrem să da ca valoarea de altceva? Audiența: Walker.id. ALLISON BUCHHOLTZ-AU: Da, exact. Deci, asta e destul de mult tot ce trebuie să știți pentru structs. Trebuie doar să ne gândim la le ca o altă variabilă. Practic o creați-vă Tipul de variabilă propriu, OK? Îl folosiți pentru a declara variabile în nici un fel. Aici Walker este încă o variabilă. Ea are doar un elev de tip acum, în loc de un tip int, sau un șir de tip, sau un char tip. Dacă ar fi fost o modalitate ușoară de a vorbi despre structs, este literalmente doar un crea propriul tip de date care vă permite să grupați toate aceste diferite un fel de date împreună. Are care face sens? OK. Că și accesarea cu puncte. Destul de mult tot ce ai nevoie. OK, în cazul în care a mers PowerPoint meu? Iată-l. Ei bine, acest lucru este ciudat. Aha. OK, rece. Orice alte lucruri sau ne vrea să se îndrepte pentru a practica? Practica? OK. Minunat. Am de gând să ieși din asta. Dacă la orice moment în timpul practica întrebări, Sunt fericit să restructura și du-te prin lucruri. Deci, am test de la zero aici. Dacă vreți să trageți l pe computerul dumneavoastră, doar ca să ia cinci minute pentru a parcurge. Poate alege unele de top întrebări vrei să mergi peste. Dacă nu voi poate decide, vom doar începe încet să lucreze prin ei, dar eu sunt sigur că vor fi unele intrebari pe care le fac deosebit de dornici de a vorbi despre și să aibă mi lucrez cu tine toate. Așa că, mergeți mai departe și să ia cinci minute. A parcurge. Și acest lucru este testul din 2013. Audiența: Zero? ALLISON BUCHHOLTZ-AU: Da, test de zero. Noi nu facem concurs unul chestii. Vom face asta în câteva săptămâni. De asemenea, pentru cei dintre voi care a venit la sfârșitul anului, avem bomboane, așa Vreți bomboane? Audiența: Sigur. ALLISON BUCHHOLTZ-AU: Sunt doar O să treacă în jurul valorii. Hei, dacă voi ajunge aici devreme, veți obține mai multe bomboane. Asta e bine. Ben, vrei bomboane? Vrei unele dintre acestea? Există, de asemenea Snickers dacă oricine vrea Snickers. Le voi pleca de aici și de aici. Simțiți-vă liber. Ai mai vrei? Audiența: Toate setat. Mulțumesc. ALLISON BUCHHOLTZ-AU: Și am avut un frumos mic grămadă acolo la început. Voi ajunge să ia testul și I a lua pentru a avea o petrecere test clasificare. E haos. 900 de examene. O să fie atât de distractiv. Va fi mare. Sunt destul de sigur că e unul din cel mai mare lipirea personal nopți ale anului. A făcut cineva test de zero de la anul trecut, dar din curiozitate? Audiența: Piese de ea. ALLISON BUCHHOLTZ-AU: Piese de ea, OK. Ai intrebari cu privire la vreuna dintre ele? Audiența: Am deja a mers la ore de birou. Vă mulțumim totuși. ALLISON BUCHHOLTZ-AU: Ei bine, sperăm este încă un fel de ajutor. Când te-ai dus la orelor de program pentru asta? Audiența: TF meu le-a avut această după-amiază. ALLISON BUCHHOLTZ-AU: Oh. Cine e TF ta? Audiența: Fred [? Wujaya?]. ALLISON BUCHHOLTZ-AU: Sunt atât de multe TFS. Atât de multe. Bine. Oricine are orice pentru a începe care pot noteze pe care ne-o dorim pentru a lucra la? Presupun că indicii una cu tabelul. Du-te pentru ea. Audiența: Poate comutatorul unul. ALLISON BUCHHOLTZ-AU: Deci, numărul 12? Presupun că numărul 8 și 9 sunt, probabil, unele dintre persoanele vreau să merg peste. Audiența: Și 10 și 11. ZAMYLA chan: Și voi ști veți obține o pagină de note, nu? Audiența: Da, deci ce sunt ne-am permis să pun pe asta. ALLISON BUCHHOLTZ-AU: Ai voie pentru a pune tot ce vrei. Și poate fi introdus. În ceea ce îmi amintesc, a noastră s-au tastat. Audiența: Puteți face o spate și ambele părți? ALLISON BUCHHOLTZ-AU: Da, ambele părți. Deci, ceva de genul heap și [? capătul din spate?] morman, alergare ori. Util. Poate lucruri mici despre indicii pentru a vă reaminti. Sintaxa pentru lucruri. Avand la fel ca un schelet Programul poate fi foarte util. Știu că mereu am uitat exact ceea ce Trebuia să scrie pentru int main, pentru că mereu am copie paste din setul meu P precedent sau e deja acolo, așa Eu niciodata nu a scris, astfel având, care poate fi foarte util. OK, așa că de ce nu ne-am începe cu numărul 8, atunci? Bine. OK. Deci, ia în considerare programul de mai jos. Deci, în mod evident, atunci când vom vedea indicii, este, probabil, o idee bună pentru a începe să desenați, nu? Vreau să știu unde totul meu bucăți mari de creta s-au. Aceasta este un fel de enervant. Deci, avem aici o funcție de swap care va lua în două indicii. Deci, în acest caz, ei ar trebui să fie de fapt de comutare lucruri față de schimb noastră originală funcție pe care a luat doar în exemplare. Deci, ceea ce va face este-- Să începem cu principalul, pentru că în cazul în care 1 este. Deci, avem unele int x 1. Avem niște y care este egal cu 2. Și apoi avem ceva de swap care va lua cele. Și să vedem ce avem noi aici. Și în table-- nostru oh boy. Cum am de gând să fac acest lucru? Am de gând să atragă masa mea aici. Abia face acolo. Abia face. 1, 2, 3, 4, 5, 6, 7. Și ei ne dau că 1 este 1, și 1 2. Rece. Minunat. Deci, 3. Și nu e [? o 1.?] Bine. Și apoi adresa lui x este 0x123. Și y este Ox127. Rece. Bine. Vreau ca voi lucra la acest pentru munca doar like-- pe ea cu oamenii din jurul tău. Îmi doresc să fi spus că în timp ce am fost înființarea. Lucrez la el. Încercați și de a lucra pe el de -vă pentru câteva minute, iar apoi voi lucra pe el cu tine. Pentru că singura cale prin care sunteți cu adevărat O să învățăm este de a face singur. Nu vă faceți griji. Mult noroc. OK, de ce nu avem încet începe să lucreze prin aceasta. Deci, toată lumea devine, după o linie, x este 1. După linia doi, x și y sunt 1 și 2, nu? Rece. Deci, linia trei este în cazul în care lucrurile primi interesant, desigur. Deci, ceea ce am făcut aici este ne-am schimbat acum. Noi spunem că x și y au aceste puncte, sau ei au adresa lui x și y, dreapta? Deci, în acest caz, trei, care este valoarea unui? o a fost trecut în, a fost dat valoarea adresei x, nu? Audiența: 1? ALLISON BUCHHOLTZ-AU: Deci, am adauga la x? Care este adresa lui x? Audiența: 0x123. ALLISON BUCHHOLTZ-AU: Exact. Dar ceea ce este un fapt ce indică spre? Dacă ar fi să dereference o, ce valoare ne-ar da. Audiența: 1. ALLISON BUCHHOLTZ-AU: Ar fi da-ne o, pentru că ceea ce ce spunem este să mergeți la acest adresă, spune-ne ce valoarea este. Deci, ceea ce ar fi b? Audiența: 0x127. ALLISON BUCHHOLTZ-AU: Exact. Deci e adresa lui y. Și apoi ce [? dereference? ?] Audiența: 2. ALLISON BUCHHOLTZ-AU: OK, deci acum patru. Am spus-o este equal-- bine acum ne-am int temp făcut este egal cu stea de-o. Deci, ce se schimbă? Există doar un singur lucru care se schimbă aici. Ce este? Audiența: Temp. ALLISON BUCHHOLTZ-AU: temp. Astfel încât să putem rescrie toate acestea. O strategie bună pentru acestea este doar imaginind Ce schimbări, pentru că cele mai multe ori exista un singur lucru care este va schimba la un moment dat, OK? Așa că am atribuit temp. Acum, următorul nostru punct, cinci, am au făcut o stea egal să stea b. Deci, ce se schimbă acum? AUDIENTA: Stea o. ALLISON BUCHHOLTZ-AU: Stea-o, așa orice altceva rămâne la fel. Și ce juca un egal? Audiența: 2. ALLISON BUCHHOLTZ-AU: 2. Lovely. Minunat. OK, iar apoi acum ne-am începe b este egală cu temperatura. Deci, singurul lucru schimbarea este steaua b. Orice altceva rămâne la fel. Și ceea ce este steaua b egal cu acum? Și ai terminat masa. Pentru că acum, la final, dacă spunem x și y, știm că în acest point-- știm că atunci când ne schimbat juca o la 2, ceea ce a făcut ca este a spus OK, la adresa 0x123 aici, o schimbe. Acum, acest lucru a fost de 2. Și apoi la acest punct, am spus OK, du-te să stea b. Deci, du-te la adresa la 0x127 și un 1 face. Deci, acum, la sfârșit, atunci când ne întoarcem de fapt de principal, avem de fapt că x este egal cu 2 și y este egal cu 1. Toată lumea bună cu asta? OK, rece. Numărul de 9. Voi lucra la asta. Am de gând să înființeze un consiliu de astfel încât să putem trage prin ea. Va fi o explozie. Marile Tabelele pot fi într-adevăr înfricoșător, știu. Dar dacă tu doar le luam rând la un timp, primesc mult mai puțin înfricoșător. Bine. Astfel încât să știi că acest lucru va avea trecut prin principală întâi, nu? Initializeaza x și y și apoi încearcă să le schimba. Deci, chiar de swap este de mai sus, un fel de real merge este că vom trece prin principal, și apoi se asteptare până la schimb, în ​​regulă? Astfel încât toată lumea știe asta. Deci, pe care o face tu Vreți să începeți cu? Este cineva sigur aproximativ una din astea? Sau chiar parțial sigur? De ce nu începem cu x? Ce credem x este? Audiența: 1. ALLISON BUCHHOLTZ-AU: 1. Deci, atunci de ce este 2. Și asta pentru că mare distincție aici este că suntem doar asociate de exemplare in, nu? Nu ne trece prin referință. Deci, chiar la sfârșitul acest program x și y au ramas la fel, pentru că ei sunt doar copii în funcția de swap. Ei nu schimba de fapt, nu? Deci, ce despre a, b, și temp? Audiența: a este b. ALLISON BUCHHOLTZ-AU: a este b. Deci, în acest caz, un fost x, care este de 1, nu? Deci, aici, să mergem prin ea. Deci, la început, a și b sunt 1 și 2 și nedefinit. Deci, inițial temp devine atribuit unui, deci temp este 1. a este egal cu b, Deci, ajungem 2, iar b este egală cu temperatura. Acum avem 1. Audiența: In cel pe care îl precedent schimbate ampersand x și y ampersand. Ce anume înseamnă asta? ALLISON BUCHHOLTZ-AU: Deci asta înseamnă că te trece prin referință. Deci, asta înseamnă că tu ești de fapt care trece în adresele unde x și y sunt stocate. Audiența: Dar tu nu ești schimbarea adresei. ALLISON BUCHHOLTZ-AU: Nu ești schimbarea adresele. Te schimbarea ceea ce este în interiorul lor. Ca ce-i la acea adresă, și de aceea funcționează. Versus în acest program aici ceea ce ce faci este bază crearea de copii. Deci, ai x și y care există ca și propriilor variabile aici. Dar atunci când treci le în schimb, e ca în cazul în care creați acest alt set întreg. Deci, nu ești niciodată de fapt x și y emoționante. Audiența: Dacă ampersand X este ceea ce este la adresa de x, ceea ce ar juca x fi? ALLISON BUCHHOLTZ-AU: Ampersand x este ceea ce este la adresa lui x, atunci star-- bine, în acest caz, X nu este un pointer. Audiența: Oh, OK. Deci, tu faci numai acest lucru pentru ca nu este un pointer. ALLISON BUCHHOLTZ-AU: pe dreapta. Puteți face numai stele de ceva care este un pointer. Poate ai putea face pentru lucruri care nu sunt, dar compila vă că face acest lucru lucruri nebunești s-ar întâmpla. Și nu sunt exact sigur ce se va întâmpla. Puteți lua întotdeauna Adresa de ceva, dar nu poți dereference ceva ce nu e un pointer. În cazul în care are sens, e o distincție bun pentru a avea. Deci, nu prea rău, nu? Tabelele sunt, sperăm, asistent mai puțin înfricoșător. Bine. Ah, cele distractive. Deci, acum, scrie propriul cod. Așa că am de gând să lase voi lucrați Pe aceasta timp de aproximativ patru minute, și apoi putem vorbi despre modalități de a aborda. Simțiți-vă liber pentru a vorbi cu oamenii din jurul tău. De asemenea, acest lucru este interesant. E ca și cum un toate fetele secțiune chiar acum. Destul de interesant. Cu excepția Chang. Dar Chang nu este cu adevărat parte a secțiunii. Minunat. Perfect. Deci, eu vă va oferi câteva indicii. În cazul în care aveți mai mult de un caracter, în cazul în care ai altceva cum ar fi 123 sau 1000 ceva, aveți nevoie pentru a fi în măsură să buclă prin și de a converti fiecare dintre acestea. Deci, există un cuplu moduri în care puteți face acest lucru, dar ai cu siguranta va avea o buclă de undeva acolo la bucla prin intermediul lor, care este un fel de giveaway cu chiar daca apel strlen, care este un fel de oh poate doriți să utilizați lungimea șirului într-un fel. Bine. Deci, ce voi că ar putea fi unul dintre primele lucruri pe care vrem să le facem? Sunt câteva cazuri în aici avem nevoie pentru a ține cont de, nu? Fie avem ceva care este nul. Ce avem? Cazuri. Null. Avem cazul în care aceasta are altceva decât 09, nu? Deci, haideți să spunem că are litere. Sau avem cazul în care este valabilă. Trei cazuri să se gândească la. Deci, pe care o credeți că ar putea fi cel mai ușor să aibă grijă de primul? Audiența: Null. ALLISON BUCHHOLTZ-AU: Cazul este nul. Deci, ce am face acolo? Audiența: [inaudibil]. ALLISON BUCHHOLTZ-AU: Da. Și ceea ce vreau să fac? Audiența: Întoarcere 0. ALLISON BUCHHOLTZ-AU: Exact. Minunat. OK. Deci, acum cazul în care aceasta are litere iar în cazul că este valid. Putem avea grijă de fapt din aceasta în termen de o buclă, OK? Deci, un mod de a face it-- ceea ce ar putea fi un mod simplu de a verifica dacă este valabil. Ne-ar trebui să treacă prin fiecare literă și de a face ce? Audiența: Verificați dacă este in-- ALLISON BUCHHOLTZ-AU: pe dreapta, puteți verifica dacă este între 0 și 9, nu? Și apoi, în cazul asta e valabil, suntem O să ajung iterarea prin string nostru oricum, nu? Deci, de ce să nu încercăm și combina-le într-o singură. Mergem de a repeta prin șir afară, și așa cum am face acest lucru, vom întâi face o verificare pentru a vedea dacă această scrisoare sau în cazul în care personajul este valid. Dacă este, vom efectua operație pe care trebuie să-l convertească. În caz contrar, acesta revine la 0, nu? Deci, inainte de a face asta, noi probabil anunt de unele variabile că ne putem întoarce la sfârșitul anului care va fi valoarea noastră reală. Deci, vom inițializa o anumită valoare să fie 0. Si acesta este doar modul în care vom începe. Așa că am de gând să scape de acest lucru. Deci, cum vom itera prin acest șir. Audiența: Pentru buclă. ALLISON BUCHHOLTZ-AU: A pentru bucla. Deci, ce e de nostru? Audiența: i este 0. ALLISON BUCHHOLTZ-AU: Mm-hm. Și ceea ce suntem iterarea până la? Audiența: lungime str de s. ALLISON BUCHHOLTZ-AU: OK, acum amintiți-vă există o cale mai bună. [Inaudibil]. Audiența: Da, putem face n egal. ALLISON BUCHHOLTZ-AU: Exact. Audiența: i este mai mic decât n. ALLISON BUCHHOLTZ-AU: Și de ce am vrea să facem asta? Îți amintești motivul? Audiența: Trebuie să-l recalculeze. ALLISON BUCHHOLTZ-AU: Becasue acest fel, Trebuie doar să calculeze strlen dată. Dacă veți face i este mai mică de strlen s, asta e ce înseamnă că recalculează lungimea de fiecare dată rulați pentru buclă, care nu este un cost uriaș de energie, dar e practică mai bine pentru a încerca și face lucruri de genul asta odată. Cu excepția cazului poate aveți un șir nebun care se schimbă la fiecare iterație. Dar dacă stă la fel, salvați-l. Bine. Și apoi m-am, plus, plus. Minunat. Suntem pe drum. Audiența: Într-adevăr repede. În primul rând, așa să spunem ne-am Ti-am mai puțin de strlen de s, sunt ele ne clasificare pe design la toate sau doar corectitudine? Nu sunt. Suntem clasificare pe corectitudine pentru teste în măsura în care știu. Nu pot face o pe deplin garanție, dar pentru cea mai mare parte, marea majoritate este corectitudine, pentru că esti sub o mulțime de constrângere timp. Design înseamnă de obicei ai timp să te gândești despre eleganta de situația dumneavoastră. OK, așa că iterarea prin intermediul. Așa că trebuie să fie verificați la a se vedea dacă acest personaj este valabil sau dacă ne putem efectua noastră normale [? o sa i?] funcție. Putem să vă faceți griji despre ceea ce că este într-o secundă. Deci, de ce nu ne-am take-- în cazul în care cineva poate gândi despre o modalitate de a verifica la a se vedea dacă acest lucru este valabil. Stim ca va fi unele în cazul în stare, nu? Și amintiți-vă acest lucru este în ASCII, așa cum s-ar putea vom vedea dacă nu e 0,1, 2, 3, 4, 5, 6, 7, 8, sau 9. Audiența: Dacă alfa. ALLISON BUCHHOLTZ-AU: Deci, dacă ar fi alfa numai să ne spui dacă e o scrisoare. Și dacă ne dea un simbol, e încă nu destul de gând să verifice. Deci, dacă vă trage în sus ASCII ta masă, știm că de la 0 la 9 sunt într-un singur segment. Spune-mi numerele pe care le corespund, dacă este posibil. Audiența: 40. ALLISON BUCHHOLTZ-AU: Deci, intervalul este ca 40-- Audiența: Poate. 48-57. Nu sunt sigur. ALLISON BUCHHOLTZ-AU: 40-57? Audiența: 48, cred. ALLISON BUCHHOLTZ-AU: 48-57. Deci, noi știm că cei ASCII symbols-- daca valoarea ASCII nu este între 48 și 57, nu e valabil, nu? Deci, am putea folosi pentru a avantajul nostru, eventual? Cum vom obține aceasta scrisoare, în primul rând off? Cum suntem accesarea acest acest personaj? Audiența: s suport i. ALLISON BUCHHOLTZ-AU: Mm-hm. Pentru ca ne putem gândi siruri de caractere ca matrice, amintiți-vă. Deci, ce vrem să spunem? Vrem să spunem dacă acest lucru este-- O să-ți dau un indiciu. E o mai mică. Ce să-l crezi trebuie să fie mai mică de? Audiența: 57? ALLISON BUCHHOLTZ-AU: 47, dreapta? Dar reprezintă, de asemenea, că în timp ce un 0 în singur [? spițe?], pentru că asta e caracterul 0. Ai putea, de asemenea, pune 47. Având tabelul ASCII, cum vezi tu, e doar ceva ar trebui să aveți pe foaia de test. Deci, dacă este cazul, dacă e un mai puțin de 0-- nu neapărat și. Se numai, fie va fi mai mică sau mai mare de 9. Astfel încât puteți să completați acest ultim pentru mine? Deci, sau s a i este ceea ce, Rhea? Audiența: mai mare de 9. ALLISON BUCHHOLTZ-AU: Nu. Asta face sens pentru pentru toată lumea, cum am ajuns acolo? Aceste probleme, sunt ca o dată ce a se vedea soluțiile, e ca și cum oh, OK. Și de aceea practică vă va ajuta. OK, deci ne întoarcem la 0. Lovely. Bine. În caz contrar, ce vrem să facem? Aceasta este partea interesanta în cazul în care este un pic mai mult cum ar fi matematica, față de CS, în opinia mea. Are cineva o idee de cum putem să facem acest lucru? Deci, cel mai important lucru pentru își dau seama este primul caracter vom lua va fi cea mai mare cifra comanda, nu? Deci, dacă ne uităm la conversie 123, prima dată când am repeta va fi de 1, dar avem nevoie de care să fie de 100 până la sfârșitul anului, nu? Deci, un singur lucru il poti face este că cu fiecare cifră luați, vă înmulțiți valoarea ta de 10, astfel încât până în momentul când ajunge la sfârșitul anului, totul a fost mutat în sus, nu? Deci, prima dată când rulați ea, ai 1, ca valoare. A doua oară când îl rulați, vă multiplica valoarea cu 10. Acesta va fi actualizat, astfel încât este acum 10, și adăugați pe dvs. de valoare următor. Și apoi multiplica că, prin 10 și se adaugă la valoarea ta viitoare. Și acesta este motivul pentru care spun acest lucru este mult mai mult ca de testare un algoritm de matematica față de CS, dar am face o digresiune. Nu scrie chestionare. Deci, un singur lucru putem face este să ne spune ori de valoare egală cu 10. Deci, acest lucru se va schimba Format din cinci cifre o dată de fiecare dată. Și apoi ne-am dori să adăugați. Dorim să adăugăm în ceea ce tocmai am primit, nu? Deci, cum putem transforma în realitate noastre ASCII de caractere într-un număr pe care o reprezintă? Deci, noi știm că 0 este egal cu 47, nu? Deci, dacă 0 este de 47, ceea ce ar trebui noi să facem să-l pentru a face de fapt aceasta este o int de la 0? Audiența: E 48. ALLISON BUCHHOLTZ-AU: 48? Scuze. Ne-ar scădea 48, dreapta? Amintiți-vă ASCII matematica? Le putem trata doar cum ar fi numere normale. Dacă le tratezi ca numere, ele devin numere eficient. Deci, dacă avem s de i, care permit lui spune în acest caz este egal cu 0. Deci s de i, în acest caz, ar fi ASCII-- int ASCII pentru a fi 47. Deci, am putea subtract-- sau 48. Ai putea face asta, este o modalitate. Stie cineva o mai bună Astfel am putea face 48? Tocmai am spus 0 este-- intra în ASCII ai putea face citat 0. Deci, nu este un fel de a face sens cum functioneaza acest lucru? Audiența: În acest moment, este valoarea 0 pentru că chiar dacă îl înmulțește cu 10, începi cu zero deci ar trebui să fie pornit? ALLISON BUCHHOLTZ-AU: Deci, în acest caz, doriți să-l multiplice înainte de a adăuga, pentru că în acest caz, da, ar fi încă be-- pointer-mi lipsește. Valoarea, în acest caz, prima timp vom rula va fi zero. Deci, esti doar adăugarea pe care prima cifră. Ceea ce este important este data viitoare voi repeta, pe care doriți să-l transfere în sus înainte de a adăuga următoarea cifre pe. Asta clarifica pentru tine? OK. Uneori, ai de gând să a obține mai multe lucruri ciudate Mathy. Dacă ați avut cel mai mult de aceasta, ești încă în desfășurare pentru get-- ai de gând să faci destul de bine. Credit parțial este o foarte mare lucru pe chestionare CS50. Deci, scrie ce stii. Dacă ați luat tot cu excepția aici, ești încă de gând să faci foarte bine problema. Pentru că ești afisat, OK, aproape știu. Știu că am nevoie pentru a itera prin intermediul. Știu ce am nevoie pentru a verifica. Nu doar eu fac destul de ajunge cum să-l convertească. Vei fi bine. Da, ai de gând să pierde câteva puncte, dar sunteți încă mergi la a lua o număr bun de puncte pentru ceva ca și cum că, dacă sunteți lipsesc aceste două linii. Mi-ar fi ca în regulă, această persoană știe ce fac. Math este greu. Deci, aș spune că vei fi bine. OK, deci voi gata să încercați să strlen cu indicii acum că voi sunteți stăpâni indicatorul? Așa că voi lăsa voi lucra pe care pentru un pic. Dacă cineva are nevoie de o reîmprospătare a cunoștințelor. Deci, doriți să utilizați indicatorul aritmetică, iar apoi, dacă s este nul, punerea în aplicare a dvs. ar trebui să se întoarcă la 0. Lucruri de genul asta pe care le fac într-adevăr fericit pentru a apela doar strlen la finalul zilei. Cred că acest lucru ar putea fi un pic mai ușor decât ultima, care este bun. Îți voi da băieți un minut, iar apoi vom lucra prin ea. Și apoi vom ajunge pentru a merge la switch-uri. OK, băieți gata? Poate un pic. Așa că te-am dat tău două opțiuni, nu? Fie verifica pentru nul și să se întoarcă la 0 dacă ea este, de fapt, sau calcula lungimea. Deci, cine vrea să scrie verifica pentru nul? Du-te pentru ea. Audiența: Dacă paranteze s este egal cu egal nul return 0. ALLISON BUCHHOLTZ-AU: Lovely. Îmi place când jumătate problema ta este doar de verificare pentru nul. Știu cu voi trecut Saptamana aceasta am fost ca cec de nul literalmente de fiecare dată. OK, deci-- Audiența: Dacă return 0 este o singură linie, avem nevoie de încă acolada? ALLISON BUCHHOLTZ-AU: Tu nu faci tehnic nevoie de ele ca de mult ești consecvent. E bună practică doar pentru a obține în obiceiul de a folosi acolade, dar punct de vedere tehnic nu. Nu aveți nevoie de ele pentru o linie. Doar avem tendința să-l recomand pentru persoane incepand de la programul. Deci, acum ce s-ar putea vrem să facem aici? Deci, acum stim ca șir nostru este valid. Vrem să păstreze calcul lungimea. Care este, probabil, primul lucru pe care doriți să faceți? Audiența: Creați un int care este lungimea. ALLISON BUCHHOLTZ-AU: Exact. Audiența: Și noi vrem să-l setat la? ALLISON BUCHHOLTZ-AU: 0. Perfect. Bine. Acum, ce vrei să fac? Acest lucru este într-adevăr cea mai mare parte de ea. Du-te pentru ea. Audiența: Deci, probabil, faci o buclă pentru. Și apoi de când apelați s te asistent adresa de primul lucru, v-ar începe cu i este egal cu 0. Apoi, atâta timp cât x plus i nu este înapoi slash 0. ALLISON BUCHHOLTZ-AU: terminatorul nul. Audiența: terminatorul nul. Apoi, adăugați o la lungime. ALLISON BUCHHOLTZ-AU: Da. OK, speram rândul său, că în cod foarte concret. Dar asta este ideea perfecta. Asta e exact ceea ce facem. Vom fi iterarea prin cu indicatorul. Deci, ceea ce vrem să facem este în loc de un int aici, pentru că suntem nu se referă la un l. Suntem referindu-se la începutul unei șir, că începe să fie o adresa, dreapta? Deci, ne dorim un pointer. Deci, vom avea unele stele char, pentru că aceasta corespunde e noastre, nu? Deci, aceasta este un moment dat ne inițializarea la începutul șirului, OK? Așa că hai să spunem i. Dacă e de început al șirului, ce se va fi atribuit? Nu 0. Ne dorim ca acesta să fie începe de string noastre. Ce reprezintă începutul șir nostru, care a fost dat la noi? Audiența: Doar s. ALLISON BUCHHOLTZ-AU: s. Deci, acest lucru creează unele noi pointer care reprezintă începutul șir noastre, OK? Un alt mod de a gândi de ea este ca aici e oferta noastră. Asta-i string noastră, s. Așa că haideți să spun acest lucru este în primul rând la fața locului, iar acest lucru este 0x4. 04. Acest lucru este s nostru, care deține acea adresă. Și am creat doar un alt unul numit i că doar se referă la același lucru. Deci, acestea sunt ambele la doar arătând la începutul șir noastre. Aceasta este doar o reprezentare grafică. Deci, acum ce vrem să faci este ne-o dorim pentru a itera condiția noastră pentru iterarea prin șir nostru. Acum cumpărături. Trebuie să magazin, băieți. Se vrem să păstrăm actualizarea până la ajungem terminatorul nul, nu? Deci, ce s-ar putea ca arata? Nu vrem i, sau ne dorim stea i este întrebarea? Este terminatorul null o adresă sau ceva situat la o adresă? Situat la o adresă, nu? Deci, avem nevoie dereference tot ceea ce este aici, pentru că aceasta este doar o adresă. Pentru a ajunge de fapt la început avem nevoie pentru a dereference acest astfel încât să putem obține de fapt, ceea ce este în acest primul loc. Deci, dacă facem Star I, ceea ce Nu vrem să egal? Audiența: Back slash? ALLISON BUCHHOLTZ-AU: Nu. Asta face sens pentru toată lumea? Avem nevoie pentru a merge în șir noastră și asigurați-vă că nu e sfârșitul. Și atunci putem actualiza la fel ca aceasta. Actualizarea normală. Deci, atâta timp cât acestea sunt met, ce trebuie să facem? Audiența: Lungime plus plus. ALLISON BUCHHOLTZ-AU: Mm-hm. Iar apoi, după de buclă se termină, ceea ce vrem să se întoarcă? Audiența: Lungime? ALLISON BUCHHOLTZ-AU: Lungime. Acolo te duci. Evident, carnea de acesta Se înțelege acest lucru pentru buclă. Are toată lumea ajunge cât de care a lucrat? Sunt fericit pentru a trece peste asta din nou. Audiența: Cea de a doua parte, astfel încât steaua i acolo, asta e adresa first-- ALLISON BUCHHOLTZ-AU: Nu e adresa. E ceea ce-i la. Audiența: Asta este de fapt acolo. ALLISON BUCHHOLTZ-AU: E ceea ce este de fapt acolo. Deci, aceasta este saying-- permite mă fac acest lucru mai bine. Deci, aceasta este 0x04, iar eu sunt doar de gând să spun că am de gând să fac acest nume meu. OK. Da, știu că am de revizuire test in seara asta. O mulțime de revizuire test. Deci, să spunem că acest șir este numele meu, Allison. Puțin murdar, dar e acolo. Și s reprezintă locația de unde șirul începe, așa că am de gând să facă acest lucru real-- aceasta este adresa unui, în cazul în care începe șirul, nu? Deci, ce facem noi aici este vrem să folosesc indicii pentru a itera prin intermediul. Așa că am de a crea unele pointer, i, de asemenea, că este egal cu începutul șirului. Și la fiecare punct, vrem să continua trece prin matrice aici până ne-am lovit de terminare nul. Așa că am mereu doriți să verificați ceea ce este la fiecare dintre aceste adrese. Așa că am dereference i, astfel încât prima dată când l-am facem spune, OK, ce e la adresa 0x04? Este o o. OK, suntem bine. Lungime creștere. Trece la următoarea. Deci, amintiți-vă Eu-- creștere indicii de mărime de tot ceea ce te arătând spre. Deci, în acest caz, deoarece este un char, acesta va fi actualizat de către unul. Deci, acum ne vom uita la 5, ceea ce înseamnă că se întâmplă aici. Deci, se spune OK, du-te la 0x05. Ce e acolo? E o l. Și va continua să faci asta până când se lovește asta. Și se spune OK, ceea ce este în indiferent de adresa asta? Terminatorul nul, OK. Ieșire. Și doar o lungime reveni. Pentru că ai nevoie de ceea ce este de fapt la adresa, nu adresa în sine. Există foarte puține locuri în care tu de fapt nevoie de adresa. Cele mai multe ori, atunci când pe care îl utilizați și e atunci când sunt în primul rând atribuirea unui pointer sau atunci când esti o trece într-o altă funcție. OK, toată lumea bună acolo? Un fel de? OK. Deci, se pare ca ne-am Trebuie aproximativ 12 minute la stânga, asa ca vom merge pe la poate ultima noastră problemă, și apoi nu e nici o concepte care au venit în sus între timp putem du-te repede peste asta. Deci, de comutare unelte este ultimul problemă aici, comutați declarații. Deci, munca ta este de a rescrie acest astfel încât acesta se comportă la fel dar nu folosesc switch-uri. Mâinile albicioase. Deci, orice intrebari despre acest off bâta? Nici unul? OK. Are toată lumea să înțeleagă că, dacă caz nu are nimic după el, aceasta înseamnă că ar trebui urmați pasul următor? Deci, cazul 1 și 2, în acest caz, face exact același lucru. Uneori, un punct de confuzie. Bine. Cineva vreo idee? Da? Audiența: Deci poți doar fac în cazul în declarații. ALLISON BUCHHOLTZ-AU: Mm-hm. Deci, care e primul nostru una? Audiența: Dacă n este egal cu egal cu 1, și 2 linii de sau n este egal este egal cu 2, apoi imprimați mic. Și atunci se poate face altfel dacă? Sau poți să faci o în cazul în care? ALLISON BUCHHOLTZ-AU: Puteți face o altfel dacă? Audiența: Ar conta dacă ai face daca? ALLISON BUCHHOLTZ-AU: Deci, o face. Are anyone-- așa, tu va primi aceeași ieșire dacă utilizați doar FI față de dacă utilizați FI altceva. Poate voi gândi la motivul de ce ar putea să doriți să utilizați o altfel în cazul în care față de o mulțime de IFS? Trebuie să se cu eficiență. Da? Audiența: Se vor verifica toate IS de fiecare dată. ALLISON BUCHHOLTZ-AU: Deci, chiar dacă a lovit această primă parte, s-ar merge pe cec orice alt unul. Deci, doriți să utilizați dacă altcineva ar fi dacă, în cazuri în cazul în care doar unul dintre ei va aplica vreodată. Deci, excludere reciprocă este ceea ce avem tendinta de a spune. Dacă aveți o grămadă de IFS, aceasta înseamnă care poate mai mult de unul dintre ei materie, și poate mai mult una dintre ele poate fi adevărat. Si doriti amandoi pentru a executa dacă sunt adevărate. Dacă doriți doar unul dintre ei la locul de muncă în aceste cazuri se exclud reciproc, doriți să utilizați altceva cazul în care, pentru că totul are de a face cu eficiență. Codul dvs. este pur și simplu mai bine proiectat în cazul în care aderă la această practică. Deci, în acest caz vom avea un altfel dacă. Și acest lucru ar fi? Audiența: n egal este egal cu 3. ALLISON BUCHHOLTZ-AU: Perfect. Mediu de imprimare. Și apoi, în ultima noastră caz, ce avem? Altceva sau altcineva dacă? Audiența: Else. ALLISON BUCHHOLTZ-AU: Do ne doresti cu Vrei altfel dacă pentru că avem cazuri concrete. Nu este un fel de captură tot. Dacă ați avut o implicit într-un switch-- amintiți-vă în switch-uri poti avea caz, și apoi ai implicit. Dacă ați avut un default, asta e un fel de altfel declarația dumneavoastră acolo. Dar dacă are doar de cazuri, ceea ce înseamnă că aveți nevoie pentru a verifica pentru a vedea dacă este fiecare dintre acestea. Deci, în acest caz, ar 4 sau 5. Ne dorim o imprimare schimbat. E mare. Și acolo te duci. Și care ar fi programul. Deci, în acest caz, dacă ne-am a avut un ceva implicit, am avea o alta în orice ar fi vrut ca noi să facem. Astfel că este o distincție bun să cunoască, să înțeleagă. Asta ajuta cu switch-uri pentru tine? Perfect. Bine. Avem aproximativ opt minute. Nu voi avea nici o alte concepte de nivel înalt? Întrebări în general? Da? Audiența: Am avut o întrebare despre una dintre ele că a fost de aproximativ aleatoare Generator de numere pe test de zero. ALLISON BUCHHOLTZ-AU: Oh, asta o. Care unul este un alt unul în cazul în care este mai mult matematica than-- da. Soluția a that-- chiar eu, atunci când Eu o văd, îmi pare ca ceea ce este aceasta. Audiența: A fost numărul 7. ALLISON BUCHHOLTZ-AU: E ciudat, în opinia mea. Deci, practic vrei pentru a utiliza drand48, care vă va oferi o număr între 0 și 1. Și tu vrei să-l folosească așa că veți obține într-un fel un-- și este mult mai mult o problema de matematica pentru mine decât eu cred o problemă CS. Modul în care faci it-- și uneori, acesta va fi la fel ca asta. Din nou, acestea sunt cazurile în care este un fel ca și cum scrie ceea ce ai poate și credit parțial. Deci, dacă ne dorim o întoarcere, știm că suntem gând să fie utilizând drand48 într-un fel, nu? Deci, de ce nu ne-am noteze că jos. Suntem o utilizați într-un fel. Modul în care au voi folosi este ca aceasta, pe care am să încerc și să explice. Deci, practic ce se întâmplă aici se datorează faptului că este între 0 și 1, ceea ce faci este bază înmulțirea by-- acest lucru este foarte mult o chestiune de matematică. Doar disclaimer complet, acest lucru este complet o întrebare de matematică. Ceea ce faci este din cauza 0 și 1 și tu vreau să fie în această gamă, de fapt, dau seama cât de mare intervalul este, apoi tu practic o scară în sus, care este ceea ce aceasta face. b minus o va da acest interval, diferența între aceste numere. Puteți multiplica între 0 și 1, și apoi adăugarea unei locații înseamnă că dumneavoastră extinderea astfel încât este mai între a și b, pe care nu mi-a plăcut într-adevăr această problemă. Așa cum am spus, acest test intenționează să cuprindă oameni care sunt mai putin confortabile, undeva în între, și mai confortabil. Deci, în cazul în care a făcut atât de că a fost ceva că toată lumea la mai puțin loc confortabil ar obține, am avea mult prea multe oameni, a marcat Perfecți, și mai confortabil ar fi plictisit. Deci, ei au întotdeauna aceste fel de întrebări teaser creierului care sunt menite să fie un pic mai greu care să ia o gândire creativă. Când le vezi, nu te prea busteni. Aș spune cu siguranta flip- prin testul dumneavoastră. Abordeze problemele care știți că puteți, pentru că n-are rost să se înțepenească pe o problemă atunci când există trei sau patru sau cinci pe pagina după care le puteți face cu ușurință. Audiența: De ce anume crezi multiplica prin gama? ALLISON BUCHHOLTZ-AU: Tu multiplica în intervalul care tu know-- e ca cat de mult după o vrei? Deci, vă puteți gândi, pentru că ea returnează un număr între 0 și 1, vă puteți gândi la ea ca la un procent. Deci, este practic spune dacă avem linia noastra de numărul de aici, un e aici, și b este aici. Ești ca cat de mult o dribleze este? Este tot ce facem. Deci, esti doar a cere procent din acest interval, care este ceea ce te da. Și apoi, practic, doar scară-l prin adaugarea unei. Este un teaser matematica creier. Dacă a existat vreun sfat ultimul minut, I ar spune Flip prin întrebări, dau seama care anume te stiu ca cum ar fi, oh am asta. Aproape sigur că o să fie întrebări pe care nu vor ști sau că ai de gând să aibă timp de, astfel încât a lovit punctele tale forte, OK? Voi o să mare. Există o mulțime de întrebări pentru un motiv, astfel încât să aveți timp să un fel de au posibilitatea pentru a demonstra ceea ce esti foarte bun la. Deci, e în regulă, dacă ești nu e bun la toate. Joaca la punctele tale forte. Da? Audiența: Deci, este acest gând să a reveni ceva care este trunchiat? Da, va fi, pentru că drand se întoarce între 0 și 1. Va returna un int, pentru că ea va trunchia când vom adăuga o sau multiplica de aceasta. Rece. Orice întrebări de ultim minut? Voi vor face mare. Vei fi fabulos. Și chiar dacă nu, va exista fi bomboane aici săptămâna viitoare. Și eu te iubesc. Te voi iubi băieți, indiferent. În regulă, toată lumea, noroc. Au o mare de timp. Vei fi bine. Și știi ce? În două zile, se întâmplă să fie peste, în timp ce eu au două examenele de joi, astfel cel puțin voi se va face. Bine, am să vă văd săptămâna viitoare.