[સંગીત વગાડવાનો] ડેવિડ જે MALAN: બધા અધિકાર. આ CS50 છે, અને આ અઠવાડિયું ચાર અંત છે. અને વિષયોની એક આજે ડિજિટલ ફોરેન્સિક્સ કે, છે માહિતી પાછી ઓફ આર્ટ. અને ખરેખર, છતાં પણ તમે મધ્યે છો હમણાં શાંતિ ત્રણ પર અને બ્રેકઆઉટ, આગામી સપ્તાહ, ધ્યાન પર રહેશે ચોક્કસપણે આ ડોમેન. શાનદાર નોકરી તેથી એક હું ક્યારેય હતી, પાછા ગ્રેજ્યુએટ સ્કૂલ હતી હું સ્થાનિક માટે કામ કરતા હતા ત્યારે મિડલસેક્સ કાઉન્ટી ડિસ્ટ્રીક્ટ એટર્નીની ઓફિસ, કરી વિદેશી કામ કરે છે. તેથી અનિવાર્યપણે, મેસેચ્યુસેટ્સ રાજ્ય પોલીસ, પ્રસંગ પર, કિસ્સાઓમાં પર કામ જ્યારે કરશે હાર્ડ ડ્રાઈવો જેવી વસ્તુઓ લાવવા અને ફ્લોપી ડિસ્ક અને મેમરી કાર્ડ અને ગમે છે. અને તેઓ તેમને હાથ કરશે મને અને મારા માર્ગદર્શક છે, અને અમારા ધ્યેય પુરાવા શોધવા માટે હતી, આ મીડિયા પર કોઈપણ, ત્યાં તો. હવે, તમે જોઈ હોય શકે વસ્રો વિદેશી આ વિશ્વના મીડિયા, ટીવી અને ફિલ્મોમાં. પરંતુ કામ હું હતો, અને daresay કે વિશ્વમાં, તમે તેને જુઓ છો જેમ તદ્દન નથી. માતાનો પર એક નજર શું તમે કદાચ જોઇ છે. [વિડિઓ પ્લેબેક] -OK. હવે, ચાલો તમે પર સારો દેખાવ વિચાર કરીએ. [સંગીત વગાડવાનો] તે -Hold. કે પાછા ચલાવો. એક મિનિટ -Wait. અધિકાર જાઓ. -ત્યાં. કે સ્થિર. પૂર્ણ સ્ક્રીન. -OK. કે સ્થિર. તમે તે પર કરશે અપ -Tighten? કે પર -Vector પાછળ વ્હીલ દ્વારા વ્યક્તિ. અહીં આ સ્થળ પર -Zoom. યોગ્ય સાધનો -સાથે, આ છબી મોટું અને sharpened કરી શકાય છે. કે -શું છે? ઇટ એક વૃદ્ધિ કાર્યક્રમ છે. કે કોઈ સ્પષ્ટ તમે -Can? હું ખબર નથી. ચાલો તે વધારવા દો. -Enhance વિભાગ A6. હું વિગતવાર ઉન્નત, and-- હું વધારવા માટે પૂરતી છે લાગે છે. મારા સ્ક્રીન પર તે પ્રકાશન. હું તેના આંખ માં પ્રતિબિંબ ઉન્નત. -Let દ્વારા આ સ્કોર છે વિડિઓ વૃદ્ધિ. -Edgar, તમે આ વિસ્તૃત કરી શકે છે? પર -Hang. આ પ્રતિબિંબ પર કાર્ય કરી રહી -I've. -ત્યાં માતાનો કોઈની પ્રતિબિંબ. -Reflection. માણસ ચહેરો એક પ્રતિબિંબ -ત્યાં છે. -ધ પ્રતિબિંબ! પ્રતિબિંબ -ત્યાં છે. મિરર પર -Zoom. તમે પ્રતિબિંબ જોઈ શકે છે. તમે અહીં છબી વધારવા -Can? તમે તેને વધારવા -Can? તમે તેને વધારવા -Can? અમે આ વધારવા -Can? તમે તેને વધારવા -Can? બીજા પર -Hold. હું વધારવા પડશે. દરવાજા પર -Zoom. 10 -Times. -Zoom. માં -Move. -More. -Wait, અટકાવો. -Stop. તે -Pause. અમને 75 ડિગ્રી -Rotate ઊભી આસપાસ, કૃપા કરીને. -Stop. આ ભાગ પર પાછા જાઓ દરવાજા વિશે ફરી. બીટમેપ કરી શકો છો કે એક છબી enhancer -Got? અમે પ્રદીપ સિંહ ઉપયોગ કરી શકો છો -Maybe પદ્ધતિ વિન્ડો માં જોવા માટે. -ધ સોફ્ટવેર કલા રાજ્ય છે. -ધ Eigenvalue બંધ છે. યોગ્ય -સાથે અલગોરિથમ્સ મિશ્રણ -કુલ માતાનો લેવામાં પ્રકાશ આગલા સ્તર પર ગાણિતીક નિયમો, અને હું તેમને ઉપયોગ કરી શકો છો આ ફોટોગ્રાફ વધારે છે. પર -Lock અને ઝેડ ધરી મોટું. -Enhance. વધારે છે. -Enhance. -Freeze અને વધારે છે. [સમાપ્ત વિડિઓ પ્લેબેક] ડેવિડ જે MALAN: તેથી તે છે બધા શબ્દો છે, પરંતુ તેઓ ન હતા યોગ્ય રીતે વાક્યો વપરાય છે. અને ખરેખર ભવિષ્યમાં, કોઈ પણ સમયે, , તમે કોઈને શબ્દ કહે સાંભળવા કરો, માત્ર થોડો મજાક ", વધારે". તમે વધારવા માટે પ્રયત્ન કરો ત્યારે, કારણ કે દાખલા તરીકે, આ શું થાય છે. અહીં એક ભવ્ય ફોટો છે. આ CS50 પોતાના Daven છે. અને અમે કરવા માગે છે ધારવું તેની આંખ માં ટ્વિંકલ પર ધ્યાન કેન્દ્રિત, અથવા ના પ્રતિબિંબ સ્પષ્ટ હતું કે ખરાબ વ્યક્તિ સુરક્ષા કેમેરા દ્વારા કબજે. આ શું થાય છે જ્યારે છે તમે એક છબી પર ઝૂમ કે માત્ર મર્યાદિત સંખ્યામાં હોય છે તેની સાથે સંકળાયેલ બીટ્સ. એટલે કે, તમે વિચાર શું છે. અને ખરેખર, Daven આંખ માં , કદાચ છ પિક્સેલ્સ છે પરંતુ ચાર કે ચોકકસ શું કંપોઝ ત્યાં ઝાંખો હતી. તેથી સમસ્યા સેટ ચાર અંક આખરે હશે તમે ખાસ કરીને, આ વિશ્વમાં અન્વેષણ કંઈક પ્રકૃતિ દ્વારા અમે ફાઈલ I / O, જ્યાં કૉલ I / O માત્ર એક ફેન્સી માર્ગ છે ઇનપુટ અને આઉટપુટ કહેતા. તેથી આમ અત્યાર સુધી, આ ક્રિયાપ્રતિક્રિયાઓ તમામ અમે એક કમ્પ્યુટર સાથે હતી સાથે મોટા ભાગે કરવામાં આવી છે તમારા કીબોર્ડ અને સ્ક્રીન, પરંતુ હાર્ડ ડિસ્ક સાથે ખૂબ જ નથી, અથવા મુદ્દાઓ બહાર ફાઇલો બચત તમે જાતે લખો. તમારા કાર્યક્રમો આમ અત્યાર સુધી છે નથી, બનાવવા માટે, અને બચત કરવામાં આવી અને તેમના પોતાના ફાઈલો સુધારીને. વેલ, એક ફાઇલ શું છે? ઠીક છે, કોઈ JPEG કંઈક. આ તમને કદાચ એક છબી છે હોય અથવા Facebook પર અપલોડ કરો, અથવા ગમે ત્યાં વેબ પર જુઓ. ખરેખર, કે ફોટો આપણે Daven ના જોયું કોઈ JPEG હતી. અને શું રસપ્રદ છે JPEGs જેવા ફાઈલો વિશે તેઓ ઓળખી શકાય છે કે જે, સામાન્ય રીતે, બીટ્સ ચોક્કસ પેટર્ન દ્વારા. અન્ય શબ્દોમાં, તે શું છે એક GIF માંથી કોઈ JPEG અલગ પાડે એક શબ્દ એક પિંગ થી એક એક્સેલ ફાઈલ ના દસ્તાવેજ? ઠીક છે, તે માત્ર અલગ છે બીટ્સ પેટર્ન. અને તે વિવિધ તરાહો છે સામાન્ય રીતે તે ફાઈલો શરૂઆતમાં. તમારા કમ્પ્યુટર એક શબ્દ ખોલે જ્યારે જેથી દસ્તાવેજ, અથવા કમ્પ્યુટર કોઈ JPEG ખોલે છે, તે પર સામાન્ય રીતે જુએ છે ફાઈલમાં પ્રથમ કેટલાક બીટ્સ. અને તે એક પેટર્ન ઓળખે છે, તે ઓહ, આ એક છબી છે, કહે છે. મને તે પ્રદર્શિત કરીએ ગ્રાફિક તરીકે વપરાશકર્તા. અથવા, ઓહ, આ એક શબ્દ દસ્તાવેજ જેવો દેખાય છે. મને એક નિબંધ તરીકે વપરાશકર્તા માટે તે દર્શાવે છે. દાખલા તરીકે તેથી, JPEGs, તે છે બહાર વળે એકદમ આધુનિક હૂડ નીચે. પરંતુ મોટા ભાગના દરેક માં પ્રથમ ત્રણ બાઇટ્સ JPEG આ ત્રણ નંબરો સાથે શરૂ કરો. તેથી બાઇટ શૂન્ય, એક, અને બે માં, છે સૌથી દરેક JPEG, 255 અને પછી નંબર 216 અને પછી નંબર 255. અને તમે કરવાનો પ્રયત્ન કરીશું શું આગામી સપ્તાહ કરી શરૂ કરવા માટે ખરેખર નીચે poking છે JPEGs જેવા ફાઈલોની હૂડ અને બીટમેપ ફાઇલો જેવા, અને જોયા શું હંમેશા તરીકે લાંબા સમય માટે કરવામાં આવી છે જો તમે કમ્પ્યુટરનો ઉપયોગ કરી છે. પરંતુ સામાન્ય રીતે નથી શું છે આ જેમ દશાંશ નંબર જેવી લખાયેલ છે. કમ્પ્યુટર વૈજ્ઞાનિકો નથી દશાંશ વાત કરતા હોય છે. તેઓ ખરેખર દ્વિસંગી વાત નથી. ખાસ કરીને, જ્યારે અમે માંગો છો નંબરો વ્યક્ત, અમે ખરેખર હેક્સાડેસિમલ વાપરવા માટે, જે તમે યાદ કરી શકે છે સમસ્યા સેટ કહે છે, ના પડકારવામાં જે એક, તમે એક અલગ સિસ્ટમ વિશે વિચારો. અમે, અલબત્ત, પરિચિત હોય છે નવ દ્વારા દશાંશ શૂન્ય સાથે. અમે બાઈનરી વિશે વાત કરી. અને અમે ખરેખર નથી ખૂબ અહીં વાપરવા માટે બહાર પર, કમ્પ્યુટર્સ ઉપયોગ કરશે. પરંતુ પ્રોગ્રામરો ખૂબ ચાલશે ઘણી વખત, પરંતુ હંમેશા, માત્ર અર્થ એ થાય, કે જે હેક્સાડેસિમલ ઉપયોગ તમે તમારા મૂળાક્ષરમાં 16 અક્ષરો છે તરીકે બે કે 10 વિરોધ. તેથી તમે કેવી રીતે વધારે માટે ગણતરી કરો હેક્સાડેસિમલ નવ કરતાં? તમે જાઓ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, એક માત્ર સંમેલન દ્વારા સી, ડી, ઇ, એફ, બી. પરંતુ કી છે દરેક છે આ એક પ્રતીક છે. કોઈ 10 છે. દરેક કારણ કે આ બોલ પર કોઈ 11, સે દીઠ છે તમારા અંકો, માત્ર દશાંશ માં ગમે માત્ર દ્વિસંગી માં ગમે અને, ફક્ત જોઈએ સંમેલન દ્વારા એક જ અક્ષર છે,. પછી અમે મૂળાક્ષર કે તેથી હેક્સાડેસિમલ માટે અમારા નિકાલ પર. તેથી કોઈ JPEG તમે જો જેમ શું લાગતું નથી તે પ્રથમ ત્રણ લખી હતી , દશાંશ નથી બાઇટ્સ પરંતુ દાખલા તરીકે, હેક્સાડેસિમલ તરીકે? અને શા માટે હેક્સ કે ઉપયોગી પણ બધા છે? વેલ, એક ઉદાહરણ પર એક ઝડપી દેખાવ. હું બિટ્સ લખી તેથી જો કે આ બાદ નંબરોની પ્રતિનિધિત્વ આ થોડી કાટવાળું હોઈ શકે હવે પાછા થોડા અઠવાડિયા થી, ડાબી એક અને પરંતુ યોગ્ય એક ખૂબ સરળ હોય છે. 255 સૌથી મોટી સંખ્યા અમે હતી આઠ બિટ્સ સાથે રજૂ કરી શકે છે. તે બધા લોકો હતા. તેથી હળવું છે કે માત્ર એક જ રસપ્રદ મધ્યમાં છે. અને તમે પ્રકારની બહાર કરો તો ગણિત, તમે ખરેખર, કે જાણી જશે એક કે પેટર્ન અને zeros 216 રજૂ કરે છે. તેથી આપણે માત્ર માટે નિયત દો હવે આ યોગ્ય છે. પરંતુ શા માટે આ રસપ્રદ છે? વેલ, એક બાઈટ, અલબત્ત, આઠ બિટ્સ છે. અને તે તમને લાગે તો તારણ છે કે ચાર બીટ્સ બે હિસ્સામાં તરીકે બાઇટ, આ જેમ. મને માત્ર કેટલાક જગ્યા ઉમેરો. તેથી પહેલાં, પછી. હું માત્ર કેટલાક સફેદ જગ્યા ઉમેર્યા છે અહીં વિઝ્યુલાઇઝેશન ખાતર. કેવી રીતે અમે હવે માં પ્રતિનિધિત્વ કરી શકે છે, કહે છે, હેક્સાડેસિમલ બીટ્સ દરેક ચતુર્ભુજ, ચાર બિટ્સ દરેક સમૂહ? દાખલા તરીકે, ડાબી પર તેથી હવે, અમે દ્વિસંગી 1111 છે. બાદ માં કે જે નંબર શું છે, તમે ગણિત બહાર કરી છે? તમે જેના સ્થાને છે, twos સ્થળ, આ ચોગ્ગા સ્થળ, અને સહિતની સંખ્યાબંધ ઉડાનો ભરી સ્થળ. પ્રેક્ષક: 15. ડેવિડ જે MALAN: તે 15 છે. તેથી અમે આઠ વત્તા ચાર કરો તો વત્તા બે વત્તા એક, અમે 15 મેળવો. તેથી હું નીચે 15 લખી શકે છે 1111, પરંતુ અહીં સમગ્ર બિંદુ હેક્સાડેસિમલ છે, અક્ષાંશ નથી. તેથી તેના બદલે નીચે લખવાની 15, 1-5, હું હેક્સ કે લખવા જઈ રહ્યો છું જો તમારી પાસે તમે પાછા લાગે છે કે જે જો એફ દ્વારા શૂન્ય, શું 15 પ્રયત્ન રહ્યું છે? પ્રેક્ષક: એફ. ડેવિડ જે MALAN: તેથી તે તે એફ બહાર કરે છે. અને તમે કહેતા કે કામ કરી શકે છે, 10 જો સાથે સાથે,, પછી ઠીક, એફ 15 છે. તેથી ખરેખર, અમે લખાણ લખે શકે એફ એફ તરીકે નંબરો આ જ સેટ. અને પછી અમે ગણિત એક બીટ કરો તો, અમે તે ડી કે જાણી શકશો. આઠ, ખૂબ સરળ છે કારણ કે અમે આ સહિતની સંખ્યાબંધ ઉડાનો ભરી જગ્યાએ એક એક છે. અને પછી, અમે એફ એફ માતાનો એક દંપતિ વધુ હોય છે. તેથી શું મનુષ્યો સંમેલન દ્વારા કરવા માટે હોય છે તેઓ ઉપયોગ કરો છો ત્યારે હેક્સાડેસિમલ તેઓ માત્ર છે વધુ સંક્ષિપ્તમાં આ થોડું લખવા, કે સફેદ જગ્યા મોટા ભાગના છુટકારો મળે છે. અને માત્ર સુપર સ્પષ્ટ કરવા આ હેક્સાડેસિમલ છે કે વાચકો, વચ્ચે સરળ સંમેલન મનુષ્યો તમે શૂન્ય લખી છે અન્ય કોઈ અર્થ હોય છે જે એક્સ, એક દ્રશ્ય ઓળખકર્તા કરતાં, અહીં એક હેક્સ નંબર આવે છે. અને પછી, તમે એફ બે અંકો મૂકી આ કિસ્સામાં એફ, તો પછી ડી એક, પછી એફ એફ. તેથી લાંબા વાર્તા ટૂંકી, હેક્સાડેસિમલ ફક્ત કરે છે ઉપયોગી હોઈ દરેક તેના એ, એફ દ્વારા શૂન્ય સંપૂર્ણપણે રેખાઓ ચાર બીટ્સ એક પેટર્ન સાથે. તમે બે હેક્સાડેસિમલ અંકો છે તેથી જો, શૂન્ય ફરીથી અને ફરીથી એફ, દ્વારા, કે સંપૂર્ણપણે તમે આપે છે આઠ બિટ્સ અથવા એક બાઇટ. તે કરે છે તેથી કે શા માટે છે પરંપરાગત ઉપયોગી છે. કોઈ બૌદ્ધિક છે ખરેખર બહાર સામગ્રી, તેના વાસ્તવિક ઉપયોગીતા કરતાં અન્ય. હવે JPEGs માત્ર નથી ગ્રાફિક્સ માટે બંધારણો ફાઈલ. તમે ત્યાં છે કે યાદ શકે છે વિશ્વમાં આ જેમ ફાઇલો, ઓછામાં ઓછા પાછા થોડા વર્ષો થી. તેથી આ ખરેખર હતી વિન્ડોઝ XP સ્થાપિત વિશ્વભરમાં પીસી લાખો પર. અને આ એક બીટમેપ ફાઇલ, બીએમપી હતી. અને એક બીટમેપ ફાઇલ, તમે આગામી જોશો સપ્તાહ, માત્ર બિંદુઓ એક પેટર્ન અર્થ થાય છે, તેઓ કહેવાય કરી રહ્યાં છો કારણ કે પિક્સેલ્સ, ખરેખર, બીટ્સ પર નકશો. તેથી શું છતાં રસપ્રદ છે, આ ફાઇલ ફોર્મેટ, BMP વિશે છે કે હૂડ નીચે, તે માત્ર ત્રણ બાઇટ્સ કરતાં વધુ છે , કે જેથી તેના હેડર કંપોઝ , પ્રથમ થોડા કરડવાથી વાત કરવા માટે. તે ખરેખર થોડી લાગે છે પ્રથમ નજરમાં જટિલ. અને તમે પી સમૂહ આ જોશો. અને કંઈક મેળવવામાં આ ખાસ બહાર હવે માત્ર એ હકીકત છે, જેથી મહત્વપૂર્ણ નથી કે દરેક બીટમેપ શરૂઆતમાં ફાઇલ, ગ્રાફિકલ બંધારણ, નંબરો સંપૂર્ણ જથ્થો છે. હવે માઈક્રોસોફ્ટ, આ આ બંધારણમાં લેખક, તે કહી શકે છે વસ્તુઓ નથી ints અને અક્ષરો અને ફ્લોટ્સ પણ શબ્દો અને ડી શબ્દો અને લોન્ગ્સ અને બાઇટ્સ. તેથી તેઓ માત્ર અલગ ડેટા પ્રકારો છો. તેઓ અલગ અલગ નામો છો આ જ વાત માટે. પરંતુ તમે પી સેટ ચાર અંક કે જોશો. પરંતુ આ કહે છે માત્ર છે કે માનવ જો પર કેટલાક .BMP ફાઈલ ડબલ ક્લિક કરે તેના અથવા તેણીના હાર્ડ ડ્રાઈવ, અને વિન્ડો ખોલે છે તેને અથવા તેણીને કે છબી દર્શાવે છે, કે ઓપરેટિંગ કારણ કે થયું સિસ્ટમ કદાચ માત્ર જણાયું આ .BMP ફાઇલ એક્સ્ટેંશન ફાઇલ નામ, પણ હકીકત એ છે કે કેટલાક બીટ્સ પેટર્ન માટે સંમેલન ખૂબ શરૂઆતમાં કે બીટમેપ ફાઈલની. પરંતુ હવે પર ધ્યાન કેન્દ્રિત દો આવા જટિલ ફાઇલ, પરંતુ તેના બદલે આ કંઈક છે. હું gedit અહીં ધારો માત્ર શરૂઆત છે ખૂબ સરળ છે કે જે કાર્યક્રમ. હું કેટલાક ઉપર સમાવેશ થાય છે મળી છે. હવે હું મળી છે # સમાવેશ થાય છે "structs.h" પરંતુ હું એક ક્ષણ પાછા કે આવવું પડશે. પરંતુ હવે માટે ઉપયોગી છે. તેથી આ એક કાર્યક્રમ છે કે અમલ કરવા માટે ચાલી રહ્યું છે રજિસ્ટ્રાર ડેટાબેઝ જેવા હોય છે. તેથી વિદ્યાર્થીઓને ડેટાબેઝ, અને વિશ્વમાં દરેક વિદ્યાર્થી કદાચ કેટલાક એક નામ અને એક ઘર અને છે અન્ય સામગ્રી, પરંતુ અમે તે સરળ રાખવા પડશે. દરેક વિદ્યાર્થી એક નામ અને એક ઘર છે. હું લખવા માગતા હતા તેથી જો જેની હેતુ જીવનમાં કાર્યક્રમ માત્ર થી ફરી વળવું હતી ત્રણ સુધી પર શૂન્ય, ત્રણ વિદ્યાર્થીઓ હોય તો હાર્વર્ડ યુનિવર્સિટી ખાતે. અને હું માત્ર GetString ઉપયોગ મેળવવા માંગો છો, દરેક વિદ્યાર્થી નામ અને ઘર, અને પછી માત્ર તે છાપે. આ પ્રકારના અઠવાડિયું જેવી છે એક, અઠવાડિયું બે સામગ્રી હવે, હું માત્ર માટે એક માંગો છો જ્યાં લૂપ અથવા તે કંઈક. અને હું GetString થોડા કૉલ કરવા માંગો છો વખત, અને પછી થોડા વખત એફ છાપો. તેથી હું છતાં, આ કરવા શકે છે કેવી રીતે, જ્યારે એક નામ અને એક ઘર બંને દરેક વિદ્યાર્થી માટે સામેલ છે? તેથી મારી પ્રથમ વૃત્તિ કદાચ આ કંઈક કરવું છે. હું પ્રથમ તો સાથે સાથે, મને આપે છે, કહે છે, , નામો કહેવાય શબ્દમાળાઓ ઝાકઝમાળ છે. અને હું એક hardcode ત્રણ અહીં નથી માંગતા. શું હું ત્યાં મૂકી કરવા માંગો છો? કે જે હમણાં જ કારણ કે, વિદ્યાર્થીઓ તેથી ટોચ પર જાહેર સતત, હું hardcode નથી જ ઘણા સ્થળોએ ત્રણ. આ રીતે, હું તે એક જ જગ્યાએ બદલી શકો છો અને તે દરેક જગ્યાએ ફેરફાર અસર કરે છે. અને પછી, હું કરી શકે શબ્દમાળા વિદ્યાર્થીઓ ધરાવે છે. અને હવે, હું કંઈક કરી શકે છે હું વિદ્યાર્થીઓ <;; માટે (હું = 0 પૂર્ણાંક હું ++. તેથી હું ઝડપી લખીને છું, પરંતુ આ છે હવે કદાચ પરિચિત વાક્યરચના. અને હવે, આ વધુ તાજેતરના હતી. હું હું મી મૂકી કરવા માંગો છો, વિદ્યાર્થી નામ, હું આ કરવા લાગે છે. અને પછી, નથી નામો પરંતુ ઘરો હું કૌંસ. હું આ, GetString કરવા માટે, અને દો મને પાછા જાઓ અને આ વાક્ય નક્કી કરે છે. સંમતિ? નાસંમત? તે ખૂબ જ વપરાશકર્તા મૈત્રીપૂર્ણ છે. હું શું કરવું તે વપરાશકર્તા કહ્યું નથી. પરંતુ હવે, હું તો પણ પછી, ચાલો માગતા હતા જેમ કે, આ વસ્તુઓ છાપી બહાર તેથી TODO પછી. હું વધુ સાથે કરવા જઇ રહ્યો છું હોવાની દલીલ છે આ this-- એક યોગ્ય અમલીકરણ નામો અને ઘરો, ત્રણ મેળવવામાં વપરાશકર્તા માંથી દરેક તેમને કુલ. પરંતુ આ ખૂબ જ સારી ડિઝાઇન, અધિકાર નથી? શું એક વિદ્યાર્થી માત્ર એક નામ ધરાવે છે અને એક ઘર છે, પણ એક ID નંબર, અને એક ટેલિફોન નંબર, અને એક ઇમેઇલ સરનામું, અને કદાચ ઘર પાનું, અને કદાચ એક પક્ષીએ હેન્ડલ, અને અન્ય વિગતો કોઈપણ સંખ્યાની એક વિદ્યાર્થી અથવા એક વ્યક્તિ સાથે સંકળાયેલ છે, વધુ સામાન્ય રીતે. અમે ઉમેરવા માટે શરૂ થશે કેવી રીતે આ કાર્યક્રમ માટે વિધેય? ઠીક છે, હું કદાચ સરળ માર્ગ જેવી લાગે છે , કંઈક કરી ચાલો કહે છે હોય છે, IDs વિદ્યાર્થીઓ ઈન્. તેથી હું ત્યાં તેમની તમામ ID ને મૂકી શકો છો. અને પછી, કંઈક માટે ફોન નંબરો, જેમ કે હું કેવી રીતે ખાતરી નથી હજુ સુધી કે પ્રતિનિધિત્વ કરે છે. તેથી આપણે આગળ અને માત્ર કોલ જાઓ આ વિદ્યાર્થીઓ, Twitters જે થોડી વિચિત્ર છે, પરંતુ છે અને ક્ષેત્રો સમૂહ વધુ. હું અસરકારક રીતે કરવા માટે શરૂ કર્યું છે નકલ અને અહીં પેસ્ટ કરો. અને આ ખૂબ વધવા રહ્યું છે ખૂબ ઝડપથી અતિભારે, અધિકાર? ત્યાં તો તે સરસ નહિં હોય વિશ્વમાં એ માહિતી બંધારણ જાણીતા નથી પૂર્ણાંક અથવા સ્ટ્રિંગ છે, પરંતુ કંઈક તરીકે ઉચ્ચ સ્તર, એક તાત્વિક, તેથી એક વિદ્યાર્થી તરીકે ઓળખાય છે, વાત કરવા માટે? સી આંતરિક સાથે આવી હતી વિદ્યાર્થીઓ માટે વિધેય, પરંતુ હું તે જેમ આપવા માગે તો શું? ઠીક છે, તે હું જાઉં છું, બહાર વળે , structs.h અહીં તરીકે ઓળખાતી ફાઈલ ખોલવા અને તમે બરાબર કરી શકો છો. અને અમે હવે આ કરી શરૂ રહ્યા છીએ. અને પી સેટ ત્રણ હૂડ નીચે, જો તમે પહેલાથી જ હવે આ કરી રહ્યો છું. એક ગ્રામ RECT તરીકે આવી કોઈ વસ્તુ છે કે પ્રોગ્રામીંગ ભાષા સી એક ત અંડાકાર સ્ટેનફોર્ડ ખાતે લોકો તે અમલમાં અહીં આ અભિગમ ઉપયોગ કરીને ડેટા પ્રકારો, પોતાના નવી માહિતી જાહેર નવી કીવર્ડ ઉપયોગ પ્રકારો કહેવાય સ્ટ્રક્ટ અને અન્ય એક કહેવાય typedef. અને ખરેખર, છતાં પણ સિન્ટેક્ષ સામગ્રી પાસેથી થોડી અલગ લાગે છે અમે પહેલા જોઇ છે સિદ્ધાંત, તે સુપર સરળ છે. આ માત્ર "એક પ્રકાર વ્યાખ્યાયિત કરે છે." અર્થ એ થાય તે એક જ હશે માળખું, અને એક માળખું માત્ર એક કન્ટેનર જેવી છે ઘણી વસ્તુઓ માટે. અને તે માળખું રહ્યું છે નામ કહેવાય શબ્દમાળા હોય, અને શબ્દમાળા ઘર કહેવાય છે. અને આપણે માત્ર સગવડ માટે, કૉલ કરો, આ સમગ્ર માહિતી બંધારણ વિદ્યાર્થી. તેથી આ ક્ષણે તમે વિચાર અર્ધવિરામ, તમે હવે છે તમારા પોતાના ડેટા બનાવવામાં પ્રકાર કહેવાય વિદ્યાર્થી કે હવે, પૂર્ણાંક સાથે રહે છે અને ફ્લોટ, અને કોલસો બનાવો, અને શબ્દમાળા અને જી RECT, અને જી અંડાકાર, અને કોઈપણ નંબર અન્ય વસ્તુઓ લોકો શોધ છે. તેથી આ વિશે ઉપયોગી છે હવે હું પાછા જાઓ છે 0 સ્ટ્રક્ટ અને આ સમાપ્ત મેં લખ્યું જે અમલીકરણ, અહીં અગાઉથી, બધા નોંધ્યું છે કે અનિવાર્ય messiness કે હું ઉમેરવામાં તરીકે થઈ રહ્યું શરૂ અંગે હતું ફોન નંબરો અને Twitters અને બધા આ અન્ય વસ્તુઓ એક વિદ્યાર્થી વ્યાખ્યા, હવે તે સંક્ષિપ્તમાં આવરિત છે વિદ્યાર્થીઓને માત્ર એક એરે તરીકે. અને તે વિદ્યાર્થીઓને દરેક હવે તે અંદર ઘણી વસ્તુઓ છે. જેથી માત્ર એક પ્રશ્ન નહીં. તમે કેવી રીતે નામ પર વિચાર છે, અને ઘર, અને ID ને, અને બીજું ગમે છે વિદ્યાર્થી ની અંદર? સુપર સરળ છે, એ જ. ન્યૂ વાક્યરચના છે, પરંતુ એક સરળ વિચાર. એરે માં તમે સરળતાથી અનુક્રમણિકા, અમે છેલ્લા અઠવાડિયે અને આ હતી. અને શું સ્પષ્ટ છે વાક્યરચના નવા ભાગ? જસ્ટ., જેનો અર્થ થાય છે "અંદર જાઓ માળખું અને આ ક્ષેત્રમાં કહેવાય મળી નામ, ઘર કહેવાય ક્ષેત્ર વિચાર વિદ્યાર્થી કહેવાય ક્ષેત્ર છે. " તેથી પી સેટ ત્રણ, તમે છો હજી પણ તે પર કામ, હજુ પણ છે અને મોટા ભાગના લોકો , તમે ખ્યાલ છે કે છે જેવી વસ્તુઓ ઉપયોગ શરૂ જી rects અને જી ovals અને અન્ય વસ્તુઓ તેમ લાગતું નથી કે અઠવાડિયું ઝીરો, એક, અથવા બે માંથી આવે છે, કે સ્ટેનફોર્ડ કારણ કે ખ્યાલ અમુક નવા ડેટા પ્રકારો જાહેર કર્યો. અને ખરેખર, કે બરાબર શું અમે પડશે પી સેટ ચાર અંક માં, સાથે સાથે, કરવા માટે, જ્યારે અમે વસ્તુઓ સાથે વ્યવહાર શરૂ છબીઓ, ત્યાર બાદ બીટમેપ, અને વધુ ગમે છે. જેથી માત્ર એક સતામણી કરનાર અને એક છે આવે છે તે માટે માનસિક મોડલ. હવે, હું procrastinated થોડી આ સવારે. હું તે જોવા માટે પ્રકારની વિચિત્ર હતી માઇક્રોસોફ્ટ વોલપેપર ખરેખર આજે જેવો દેખાય છે. અને તે 2006 માં કોઈને બહાર વળે ખરેખર લગભગ ચોક્કસપણે ગયા તે જ હાજર વાસ્તવમાં ફોટોગ્રાફ શું આ દિવસોમાં કે જેવો દેખાય છે. આ ક્ષેત્ર હવે થોડી overgrown છે. તેથી છબીઓ હવે કહીએ તો, અહીં Daven પાછા લાવવા દો સ્ક્રીન અને નિકોલસ પર, અને માત્ર તમે યાદ કે તમે લંચ માટે અમને જોડાવા માંગો છો, તો અમારા સામાન્ય URL પર આ શુક્રવાર, હેડ અહીં. તેથી જ્યાં અમે સોમવારે છોડી હતી? અમે અધિકાર છે, આ સમસ્યા રજૂ? આ મોટે ભાગે એક સાચો હતો સ્વેપ અમલીકરણ, જેમાં તમે બે ints લેવા એક, બી કહેવાય છે, એક કહેવાય લૌરા અહીં કર્યું, જેમ તેમને સ્વેપ દૂધ અને પાણી સાથે સ્ટેજ પર, કામચલાઉ ઉપયોગ કરીને ચલ, અથવા ખાલી કપ, અમે એક અને એક માં બી મૂકી શકે છે, જેથી વસ્તુઓ એક વાસણ કર્યા વિના બી. અમે એક ચલ ઉપયોગ થાય છે. તે કામચલાઉ નોકર કહેવાય છે. પરંતુ મૂળભૂત શું હતું સોમવારે આ કોડ સાથે સમસ્યા? અહીં સમસ્યા શું હતું? અરે વાહ. પ્રેક્ષક: તે વધુ જગ્યા લે છે. ડેવિડ જે MALAN: વધુ લે છે જગ્યા, હું એક ચલ ઉપયોગ કરું છું, કારણ કે, અને તે બરાબર છે. કે સાચું છે, પણ હું છું કે ઠીક છે કહેવું જાઉં. તે ભવ્ય માં માત્ર 32 બિટ્સ છે વસ્તુઓ યોજના, તેથી નથી એક મોટી સોદો. અન્ય વિચારો? પ્રેક્ષક: તે માત્ર અદલબદલ સ્થાનિક ચલો. ડેવિડ જે MALAN: ચોક્કસ. તે માત્ર ત્યારે જ સ્થાનિક ચલો અદલબદલ. કોઈપણ સમયે તમે એક કાર્ય કૉલ કારણ કે હું Annenberg ના ટ્રે હતી જ્યારે છેલ્લા સમય, તમે તળિયે મુખ્ય છે. જલદી તમે કહેવાય કાર્ય કૉલ તરીકે સ્વેપ, સ્વેપ એક્સ અને વાય ન મળી નથી, મૂળ કિંમતો. અમે શું દાવો હતી, સ્વેપ વિચાર કરે છે? પ્રેક્ષક: નકલો. ડેવિડ જે MALAN: તેમને નકલો તેથી. તેથી તે તમે છો, એક અને બે નહીં છેલ્લા સમય ના ઉદાહરણ યાદ, પરંતુ એક અને બે એક નકલ કે સફળતાપૂર્વક સ્વૅપ છે. પરંતુ કમનસીબે અંતે, તે કિંમતો હજુ પણ એ જ છે. તેથી અમે સાથે આ જોઈ શકો છો અમારા નવો મિત્ર, આસ્થાપૂર્વક GDB, તમે અથવા TFs અને Ca માતાનો હોય છે નીચે પ્રમાણે તરફ તમે માર્ગદર્શક કરવામાં. તેથી કોઈ સ્વેપ રિકોલ ચાલો જેમ દેખાય છે આ જેમ this-- દેખાવ ખોલો. અમે બે, એક વાય એક્સ આરંભ. પ્રિન્ટ એફ માતાનો એક ટોળું હતી. પરંતુ તે પછી, કી કૉલ અહીં, સ્વેપ હતી બરાબર કોડ અમે છે માત્ર એક ક્ષણ પહેલા થયો છે. જે પ્રથમ સાચું છે નજરમાં, પરંતુ વિધેયાત્મક રીતે, આ કાર્યક્રમ છે, કારણ કે કામ કરતું નથી તે કાયમ માટે એક્સ અને વાય સ્વેપ નથી. તેથી, ઝડપી ગરમ ચાલો આ જુઓ અહીં GDB, એક ./noswap સાથે. જબરજસ્ત માહિતી એક ટોળું કે હું હવે નિયંત્રણ એલ સાથે છુટકારો મળશે. અને હવે, હું જાઉં છું આગળ વધો અને તે ચાલે છે. અને કમનસીબે, કે કે ઉપયોગી ન હતી. આ અંદર કાર્યક્રમ ચાલી હતી કાર્યક્રમ, GDB, એક ડીબગર કહેવાય પરંતુ તે મને આસપાસ થેલી, કોથળી દો ન હતી. તેથી હું ખરેખર વિરામ કરી શકો છો કેવી રીતે આ કાર્યક્રમ અંદર અમલ? તેથી તૂટી જાય છે. અને હું કોઇ પર તોડી શકે વાક્ય નંબર, એક, 10, 15. પરંતુ હું પણ પ્રતીકાત્મક તોડી શકે છે વિરામ મુખ્ય કહેતા. અને તે વિરામ સેટ બનશે બિંદુ, દેખીતી રીતે મુખ્ય માં લીટી 16 પર. અને જ્યાં 16 લીટી છે? ચાલો કોડ માટે જાઓ અને noswap સુધી જાઓ. અને ખરેખર, 16 લીટી છે ખૂબ પ્રથમ કાર્યક્રમ. તેથી હવે, હું આગળ જાઓ અને પ્રકાર જો આ સમય ચાલે દાખલ કરો, તે થોભાવવામાં. તેથી આપણે આસપાસ થેલી, કોથળી દો. શા માટે એક્સ શૂન્ય છે એક્સ છાપો? અને ડોલર સાઇન અવગણો. તે પારખુ માટે માત્ર છે કાર્યક્રમના વપરાશ. શા માટે આ ક્ષણે એક્સ શૂન્ય છે? અરે વાહ. પ્રેક્ષક: તે અધિકાર પહેલાં થોભાવવામાં 16 લીટી નથી, ખરેખર 16 લીટી પર. ડેવિડ જે MALAN: ચોક્કસ. GDB, મૂળભૂત રીતે, થોભાવવામાં છે માત્ર 16 લીટી પહેલાં અમલ. તેથી તે ચલાવવામાં નથી જે કેટલાક અજ્ઞાત કિંમત છે એક્સ છે. અને અમે તે છે કે નસીબદાર મળી શૂન્ય જેવા સ્વચ્છ કંઈક. તેથી હવે હું આગામી લખો છો, હવે તે 16 ચલાવવામાં. મને 17 ચલાવવા માટે માટે રાહ જોઈ રહ્યું છે. મને આગળ અને પ્રિન્ટ એક્સ જાઓ. તે એક છે. મને આગળ અને પ્રિન્ટ વાય જાઓ. હવે હું શું જોવું જોઈએ? AUDIENCE: [અશ્રાવ્ય] ડેવિડ જે MALAN: થોડું મોટેથી. AUDIENCE: [અશ્રાવ્ય] ડેવિડ જે MALAN: જવાબ નથી ખૂબ સર્વસંમતિ. તેથી હા, અમે કેટલાક કચરો કિંમત જુઓ. હવે, વાય ત્યાં 134514064 છે. ઠીક છે, તે માત્ર કેટલાક કચરો કિંમત છે. મારા કાર્યક્રમ RAM વાપરે વિવિધ હેતુઓ માટે. અન્ય કાર્યો છે. અન્ય લોકો મારા કમ્પ્યુટર અંદર લખ્યું હતું. તેથી તે બિટ્સ માટે ઉપયોગ કરવામાં આવે છે અન્ય કિંમતો, અને હું શું જોઈ રહ્યો છું કેટલાક અવશેષો છે કે મેમરી પહેલાં ઉપયોગ. તેથી કોઈ મોટો સોદો છે, કારણ કે જલદી હું આગામી લખો અને પછી વાય પ્રિન્ટ તરીકે, તેને આરંભ છે હું માંગો છો તે કિંમત. તેથી હવે, ચાલો થોડી ઝડપી આગળ જાઓ. આગામી માટે એન. માતાનો ફરીથી કરવા દો. માતાનો ફરીથી કરવા દો. પરંતુ હું હિટ નથી માંગતા અહીં, કારણ કે હું તો અંદર થઈ રહ્યું છે તે જોવા માટે કરવા માંગો છો સ્વેપ, આદેશ શું છે? પ્રેક્ષક: પગલાંઓ. ડેવિડ જે MALAN: પગલાંઓ. તેથી આ એક માં મને જાય તેના બદલે તે ઉપર કરતાં કાર્ય,. અને હવે, તે થોડું છુપાયેલું છે પ્રામાણિકપણે, પરંતુ આ માત્ર છે હવે હું રેખા 33 છું મને કહી. અને માતાનો ફરીથી આ કરવા દો. પ્રિંટ કામચલાઉ નોકર. કચરો કિંમત, નકારાત્મક આ સમય, પરંતુ તે માત્ર હજુ પણ કચરો કિંમત છે. તેથી આપણે આગળ, પ્રિન્ટ કામચલાઉ નોકર કરવા દો. તે 1 થી આરંભ છે, જે એક ઉર્ફ x ની કિંમત હતી. હવે, જ્યાં અમારા એક છે અને આવતા એક્સ? ઠીક છે, અમે મુખ્ય માં નોટિસ આ કિંમતો એક્સ અને વાય કહેવાય છે. અમે પછી નીચે પ્રમાણે તેમને સ્વેપ પસાર કર્યો હતો. એક્સ અલ્પવિરામ વાય, પ્રથમ આવ્યા હતા. અને પછી, સ્વેપ તેમને એક્સ અને વાય કહી શકે છે. પરંતુ ચોકસાઈ માટે, તે છે એક બોલ્ડ અને તેમને કહે છે. પરંતુ a અને b હવે હશે આવે છે અનુક્રમે એક્સ અને વાય, નકલો. હું કામચલાઉ નોકર પાછા GDB પર જાઓ તેથી જો હવે એક છે અને એક હવે છે. હું હવે આગળ શું અને તો પણ પ્રિન્ટ કરી એક, એક પહેલાથી જ ઉપર ખસેડવામાં આવ્યો છે. આ દૂધ ભૂતપૂર્વ ધસી આવ્યું છે નારંગીનો રસ કાચ, અથવા ઊલટું. અને હવે હું આગામી ફરી કરવા માટે, અને જો હું એક સેનીટી ચેક તરીકે છાપે છે, એક હજુ પણ બે છે, પરંતુ બોલ્ડ હવે છે. પ્રમાણિકપણે, તે હજુ પણ છે. હું શું કામચલાઉ નોકર પડી નથી. પરંતુ જલદી હું હવે લખો, ચાલો કહે હવે હું અંતે છું, પાછા જાઓ ચાલુ રાખવા આ કાર્યક્રમ. અને કમનસીબે, એક્સ છે હજુ પણ એક અને વાય હજુ બે છે. તેથી GDB ની ઉપયોગિતા શું હતું? તે મને ઠીક મદદ કરી શકી નહીં સમસ્યા સે દીઠ, પરંતુ તે આસ્થાપૂર્વક મને મદદ અનુભૂતિની દ્વારા સમજી કે હા, મારા તર્ક અધિકાર છે, પરંતુ મારી કોડ આખરે કર્યા નથી કાયમી અસર. જેથી અમે છો એક સમસ્યા છે હવે આજે ઉકેલવા માટે જઈ રહી છે. પરંતુ આ માર્ગ દ્વારા ત્યાં વિચાર કરીએ. શબ્દમાળા એક જૂઠાણું છે. તે, પણ, એક માહિતી પ્રકાર આ તે છે સી માં અસ્તિત્વમાં છે કેટલાક માટે સમાનાર્થી આવી કંઈક બીજું માટે સમય, અને અમે નીચે જણાવે છે કે કરી શકો છો. મને આગળ વધો અને ખોલો એક કાર્યક્રમ તુલના-0 કહેવાય. અને આ એક બહાર લખો બદલે, અમે કોડ લઈ જવામાં શરૂ કરી શકશો મને પહેલેથી જ લખ્યું હતું, પરંતુ તે માત્ર થોડા રેખાઓ છે. તેથી આ સરખામણી-0 છે. અને પ્રથમ વસ્તુ હું કરી રહ્યો છું લખાણ એક વાક્ય રહ્યો છે. પરંતુ હું છું શું નોટિસ પ્રથમ વખત કરી. શું સ્પષ્ટ રીતે 21 લીટી વિશે અલગ છે? ખરેખર, એક મિનિટ રાહ જુઓ. આ નકલ બે છે. તે પણ યોગ્ય કાર્યક્રમ નથી. બધા હક છે, સ્પોઇલર ચેતવણી. બધા હક છે, તેથી કે વાંધો નથી. તે ભવિષ્યના પ્રશ્નનો જવાબ છે. અહીં-0 સરખાવવા માટે, અને હું છું છે લખાણ એક વાક્ય વિચાર વિશે. કાર્યક્રમ માતાનો ખૂબ જ સરળ. તેથી આ સરળ છે. આ અઠવાડિયાના એક, અઠવાડિયું બે સામગ્રી જેવી છે આ ક્ષણે. શબ્દમાળા ઓ = GetString. હવે, હું નીચે અહીં ફરીથી છે. શબ્દમાળા ટી = GetString. આ અને પછી, છેલ્લા વસ્તુ કાર્યક્રમ, તેનું નામ સૂચવે છે, હું તેમને સરખાવવા માટે પ્રયાસ જાઉં છું છે. તેથી ઓ તો, પ્રથમ શબ્દમાળા, = ટી, પછી હું છું બરાબર તમે આ જ વાત લખો કહેવા જાઉં. બાકી, હું કહેવા જાઉં છું તમે અલગ વસ્તુઓ લખો. તેથી આપણે કમ્પાઇલ અને આ કાર્યક્રમ ચલાવો. તેથી શૂન્ય તુલના કરો. સારી લાગે છે. કોઈ સંકલન ભૂલો. મને આગળ હવે જાઓ અને ./compare-0 લખો. મને આગળ વધો અને કંઈક કહો : Daven અને કંઈક: રોબ. અને હું અલગ વસ્તુઓ લખો. અત્યાર સુધી, જેથી સારા. કાર્યક્રમ યોગ્ય હોય તેમ લાગે છે. પરંતુ તેને ફરીથી ચલાવો. કંઈક કહો: ગાબે. કંઈક કહો: ગાબે. અધિકાર છે. કદાચ હું જગ્યા પટ્ટી દબાવો અથવા ફંકી કંઈક. માતાનો ફરીથી કરવા દો. Zamyla તેથી. Zamyla. વિવિધ વસ્તુઓ. તેથી શું થઈ રહ્યું છે? તેથી અમે આ બે રેખાઓ છે કોડ છે, GetString બે વખત કહેવાય છે. અને પછી, હું ફક્ત છું અને ટી સરખાવવા માટે પ્રયાસ કરે છે. પરંતુ રહ્યું છે પછી શું? માટે ઠીક છે, મારા હસ્તાક્ષર માતાનો વિશે કંઈક આ ઉદાહરણ કસાઈ. અને ચાલો ખરેખર ફેંકવું દો આ અહીં પર, એ જ. તેથી અમે એક લીટી જેવી છે શબ્દમાળા ઓ = GetString. જેથી ફક્ત પ્રથમ છે કે કાર્યક્રમ રસપ્રદ વાક્ય. પરંતુ આ બધા સમય રહી છે તે હૂડ નીચે રહ્યું? ઠીક છે, ડાબી બાજુ બાજુ શબ્દમાળા છે, જે ચલ અમુક પ્રકારના છે, અને તે ઓ કહેવાય છે. તેથી હું આ મેમરી ઉપયોગ કરે છે ખબર છે કે, અથવા RAM, કોઈક મારા કમ્પ્યુટર માં. તેથી હું અમૂર્ત કરવા જઇ રહ્યો છું એક ચોરસ કે દોરે છે. 32 બિટ્સ, તે બહાર વળે છે, પરંતુ ભવિષ્યમાં પર વધુ. અને પછી, શું અહીં ચાલી રહ્યું છે? ઠીક છે, દેખીતી રીતે GetString વપરાશકર્તા માંથી શબ્દમાળા મળે છે. અને GetString મળી Zamyla અથવા ગાબે અથવા Daven. તેથી આપણે પ્રથમ પસંદ કરીએ તે, Daven હતી. તેથી અસરકારક રીતે, શું GetString મળી મને કે પ્રથમ કિસ્સામાં ડી એક વી ઈ એ હતી. અને પછી, બીજું શું કર્યું તે મને ગુપ્ત આપી? AUDIENCE: [અશ્રાવ્ય] ડેવિડ જે MALAN: અરે વાહ, આ / 0 અથવા નલ પાત્ર. તેથી તે અસરકારક રીતે મને શબ્દમાળા આપી હતી. પરંતુ અમે પહેલાથી જ અગાઉના પરથી ખબર શબ્દમાળા માત્ર એક વ્યૂહરચના છે કે લાગે છે અક્ષરો, અને તે દ્વારા બંધ છે આ ખાસ સંત્રી પાત્ર, / 0. પરંતુ આ વાત સાચી હોય તો અને આ એક ચોરસ છે, આ સ્પષ્ટ રીતે એક બહુ મોટા લંબચોરસ છે. અને ખરેખર, આ છે, હું માત્ર 32 બિટ્સ દાવો. અને આ સ્પષ્ટ રીતે વધુ 32 છે બિટ્સ, આ કદાચ છે કારણ કે આઠ વત્તા આઠ વત્તા આઠ વત્તા આઠ વત્તા આઠ, માત્ર તે ASCII માં બાઇટ્સ છે. કેવી રીતે હેક અમે ફિટ જવું છે અહીં આ થોડું બોક્સમાં Daven? વેલ, શું ખરેખર GetString કરી છે? વેલ, આ ગ્રીડ અહીં રજૂ મારા કમ્પ્યુટર મેમરી અથવા રેમ. તેથી આપણે આપખુદ જો કે કહેવું આ દરેક એક બાઈટ પ્રતિનિધિત્વ પછી અમે દરેક વિચાર કરી શકો છો બાઇટ એક સરનામું હોવા તરીકે, 33 ઓક્સફર્ડ સ્ટ્રીટ, અથવા 34 જેવી ઓક્સફર્ડ સ્ટ્રીટ, અથવા 35 ઓક્સફર્ડ સ્ટ્રીટ. તેથી ઘરો સરનામાઓ છે જેમ અને ઇમારતો સરનામાં હોય છે, જેથી વ્યક્તિગત બાઇટ્સ કરી મેમરી સરનામાંઓ અથવા હોય છે કે અનન્ય તેમને ઓળખે છે. હવે, આ મનસ્વી છે. પરંતુ હું જાઉં છું, સરળ રાખવા માટે માત્ર સંમેલન દ્વારા હેક્સાડેસિમલ વાપરવા માટે, પરંતુ 0x અન્ય કશું અર્થ થાય છે કરતાં "આ હેક્સાડેસિમલ છે." અને હું દાવો છે કે જાઉં છું આ "ડી" મેમરી બાઇટ એક પર થાય. હું બીજું કંઇ થઇ રહ્યું મળી મેમરી, તેથી Daven પ્રથમ સ્થળ મળી બાઇટ એક છે. આ, તો પછી, 0x2 હોઈ ચાલે છે. આ 0x3 રહ્યું છે. આ 0x4 હોઈ ચાલે છે. આ 0x5 રહ્યું છે. આ 0x6 હોઈ ચાલે છે. પરંતુ તમે એક જ વિચારવાનો શરૂ શું કમ્પ્યુટરની કરી વિશે હૂડ નીચે, તમે અટકળ બાંધવી શરૂ કરી શકો છો તમે કેવી રીતે, કેટલાક વર્ષ પહેલાં, કરશે પોતે સી અમલ કર્યો છે. કદાચ GetString શું છે returning-- તે કારણ કે તે નથી જેવી લાગે છે પરત Daven, સે દીઠ, તે ચોક્કસ નથી ચાલી રહ્યું છે કારણ કે આ થોડું box-- ફિટ તેથી શું GetString કદાચ પરત આવે છે? AUDIENCE: [અશ્રાવ્ય] ડેવિડ જે MALAN: Daven સ્થિતિ. અને તે આ કરી રહ્યું છે ક્યારેય અઠવાડિયું એક છે. શું GetString ખરેખર છે પરત શબ્દમાળા, સે દીઠ નથી. કે નાના સફેદ ખોટા એક છે. તે ના સરનામા પરત છે મેમરીમાં શબ્દમાળા અનન્ય સરનામું. Daven 33 ઓક્સફર્ડ સ્ટ્રીટ પર રહે છે. પરંતુ વધુ સંક્ષિપ્તમાં, ગેવિન રહે 0x1 પર નંબર વન સરનામું. તેથી શું આ મૂકવા નહીં નાના બોક્સમાં પછી, સ્પષ્ટ કરવા કે જેઓ શબ્દમાળા માત્ર સરનામું છે. તેથી આ બધા સમય, આ છે થઈ રહ્યું કરવામાં આવી. પરંતુ આ અંતે સંકેતો શું હવે જો ધરાવે છે તે અંદર એક નંબર, કોણ છે છે તમે બંધ કરવા, પ્રોગ્રામર, કોઈપણ નંબર મૂકવા થી કોઈપણ ચલ અને માત્ર જમ્પિંગ મેમરી કે ભાગ છે? અને ખરેખર, અમે જોશો કે ધમકી આગામી સમય છે. પરંતુ હવે માટે, આ અપૂરતી લાગે છે. મને કહે, તો મને એક વિચાર શબ્દમાળા, તમે મને Daven આપે છે. પરંતુ તમે ખરેખર મને Daven આપી નથી. તમે મને આપી બધા Daven સરનામાં છે. હું પછી ખાતરી માટે ખબર નથી કેવી રીતે જ્યાં Daven શરૂ થાય છે અને ends-- વાર્તા માતાનો weird-- મેળવવામાં Daven શરૂ થાય છે અને અંત થાય છે, જ્યાં અને, આગામી પછી મેમરીમાં શબ્દમાળા શરૂ થાય છે? સારું, તમે સોંપવામાં કરી રહ્યાં છો મને Daven શરૂઆત, અનિવાર્યપણે, કેવી રીતે ખબર પડે તેમના નામ ઓવરને જ્યાં છે? તે ખાસ નલ પાત્ર, જે તમામ વધુ મહત્વપૂર્ણ હવે છે આ નીચે શબ્દમાળાઓ જો હૂડ ફક્ત ઓળખાય છે અનન્ય મેમરી તેમના સ્થાન દ્વારા. તેથી આ બધા સમય, તે છે શું થઈ રહ્યું કરવામાં આવી છે. તેથી અમે હવે જુઓ ત્યારે અહીં કોડ છે, સમજાવવું તમે 26 લીટી માં ભૂલ કરશે તો. શા Zamyla અને Zamyla અલગ છે? શા ગાબે અને ગાબે અલગ છે? અરે વાહ, પાછળ. પ્રેક્ષક: તેઓ અલગ અલગ સરનામા છે. ડેવિડ જે MALAN: ફક્ત કારણ કે તેઓ અલગ અલગ સરનામા છે. તમે GetString કૉલ જ્યારે કારણ ફરીથી, હું અહીં ઝડપથી કરીશ, જે આ બીજા લાઇન, શબ્દમાળા છે ટી, હું કાર્યક્રમ હતી, GetString બીજા કૉલ સમકક્ષ હોય છે. હું ફોન આગળના સમયે GetString, હું જાઉં છું મેમરી એક અલગ ભાગ મળે છે. GetString માન્ય છે ઓપરેટિંગ પૂછો વધુ અને વધુ મેમરી માટે સિસ્ટમ. તે જ ફરી ઉપયોગ નથી ચાલી રહ્યું છે છ બાઇટ્સ દરેક એક સમય. જો તે નવી બનશે મેમરી ભાગ, જે ટી વિચાર રહ્યું છે એનો અર્થ એ થાય અહીં કેટલીક અન્ય કિંમત. હું તેથી જ્યારે ઓ = બરાબર ટી, તમે સરખામણી કરી રહ્યાં છો આ અને એક સામે સામે ડી આ અને આ સામે વી. તમે આ સરખામણી કરી રહ્યા છો , કે જે આ સામે પ્રમાણિકપણે ખૂબ ઉપયોગી useless-- છે ખૂબ નકામી છે ખરેખર જે કારણ કે શબ્દમાળાઓ મેમરીમાં જ્યાં ધ્યાન આપતા? અને ખરેખર, અમે છે. અને અમે નથી જઈ રહ્યાં છો ખાસ કરીને કાળજી શરૂ કરો. માત્ર ભૂલો પેદા થાય છે શકે છે, તે હદ સુધી અને સુરક્ષા ધમકીઓ ઇચ્છા પેદા થાય છે કરી શકો છો અમે ખરેખર આ વિશે કાળજી શરૂ કરો. તેથી આપણે આ સમસ્યા ઉકેલવા દો. તમે સુપર ફક્ત તેને ઠીક, બહાર ફેંકે છે. અને હું પહેલાં, ખરેખર ચાલો ફરીથી જણાવે છે કે, શું કરશે એક CS50 વર્ગ જો તમે કરી અને તમે અમલ કરવા માટે હતી બે શબ્દમાળાઓ સામે સરખામણી. તમે સ્પષ્ટ રીતે માત્ર ઓ = ટી બરાબર ઉપયોગ કરી શકતા નથી. પરંતુ માત્ર તાર્કિક, કેવી રીતે જો તમે આ શબ્દમાળા તુલના કરશે સી કોડ ઉપયોગ કરીને આ શબ્દમાળા સામે? અરે વાહ. પ્રેક્ષક: જસ્ટ કરવા માટે લૂપ માટે [અશ્રાવ્ય] ડેવિડ જે MALAN: યોગ્ય છે. AUDIENCE: [અશ્રાવ્ય] ડેવિડ જે MALAN: અરે વાહ. જસ્ટ લૂપ અથવા માટે ઉપયોગ લૂપ અથવા જે છે. પરંતુ માત્ર મૂળભૂત વિચાર લાગુ પડે છે કે આ મેમરી અથવા એક એરે એક ભાગ છે અને છે આ, ફરી વળવું બંને એક જ સમયે. અને માત્ર અક્ષરો સરખામણી કરી. અને તમે એક હોઈ મળી છે થોડી કાળજી, તમે કારણ કે એક આંગળી નહિં માંગો અન્ય ભૂતકાળ જાઓ એક શબ્દમાળા છે કારણ કે અન્ય કરતાં લાંબા સમય સુધી. તેથી તમારા માટે ચેક કરવા માંગો છો જઈ રહ્યાં છો અંતે આ ખાસ કિંમત છે, નલ. પરંતુ તે ખરેખર છે, અંતે, જે સરળ. અને પ્રમાણિકપણે, અમે જરૂર નથી કે વ્હીલ પુનઃશોધ. અહીં આવૃત્તિ બે છે. અને શું હું અહીં કહેવું જાઉં છું છે બદલે ઓ સરખામણી ના, = ટી બરાબર શબ્દમાળા જો હું તેના બદલે, કહેવું જાઉં છું ઓ અલ્પવિરામ ટી સરખામણી = 0 સમકક્ષ હોય છે. હવે, શબ્દમાળા શું સરખામણી છે? તે એક કાર્ય છે, તારણ આપે છે કે જેની હેતુ જીવનમાં સી, સાથે આવે છે બે શબ્દમાળાઓ સરખાવવા માટે છે. અમે વાંચી અને, જો તુલના જગાડવો તેના મદદ પાનું અથવા દસ્તા અથવા CS50 સંદર્ભ, તે ચાલશે ફક્ત તમે તે જગાડવો કહી નકારાત્મક ક્યાં વળતર તુલના નંબર અથવા હકારાત્મક નંબર અથવા શૂન્ય, શૂન્ય અર્થ એ થાય છે કે તેઓ સમાન છો. તેથી માત્ર અટકળ. તે શું જો અર્થ શકે સરખામણી વળતર જગાડવો નકારાત્મક કિંમત અથવા હકારાત્મક કિંમત? પ્રેક્ષક: કરતાં વધારે અથવા કરતાં ઓછો હોય છે. ડેવિડ જે MALAN: અરે વાહ, કરતાં વધારે અથવા કરતાં ઓછો હોય છે. તેથી જો તમે સમગ્ર સૉર્ટ માગે છે એક dictionary-- માં શબ્દમાળાઓ ટોળું અમે આખરે road-- નીચે કરશે તરીકે સંપૂર્ણ કાર્ય સંભવિત ઉપયોગ કરવા માટે, તે આ કરી રહ્યું છે કારણ કે તમારા માટે શબ્દમાળાઓ સરખામણી, અને કહી તમે એક બોલ્ડ પહેલાં આવે છે, અથવા કરે છે બી એક મૂળાક્ષરોની પહેલાં આવે છે. અમે બરાબર કરી શકો છો. અને હું અન્ય એક હતી નોટિસ આ ઉદાહરણમાં વસ્તુ. બીજું શું વધારે બદલાઈ ગયો છે આ મુખ્ય કાર્ય માં? ચાર *. અને આ કે અન્ય સફેદ જૂઠ છે. આ બધા સમય, જ્યારે તમે કર્યું શબ્દમાળા લખી કરવામાં, અમે ગુપ્ત પુનર્લેખન કરવામાં આવી છે ચાર તરીકે શબ્દમાળા * તેથી ખરેખર છે કે રણકાર તમે સમજે છે. અન્ય શબ્દોમાં, cs50.h માં અને અમે આખરે જોશો, અમે સમાનાર્થી કહેવાય શબ્દમાળા કરી કે ઘરનાં પરચૂરણ કામો * તરીકે જ વાત છે. અને હવે માટે, માત્ર તે ખબર * આ સંદર્ભમાં, ઓછામાં ઓછા, સરનામાં છે. શું સરનામું? ઠીક છે, હકીકત એ છે કે હું જણાવ્યું હતું કે ઘરનાં પરચૂરણ કામો * અને * પૂર્ણાંક અથવા * ફ્લોટ નથી ઘરનાં પરચૂરણ કામો * છે કે જે થાય છે ચાર રચે ની સરનામું. અહીં આ નાના બોક્સમાં ઉર્ફે શબ્દમાળા ખરેખર પ્રકાર ઘરનાં પરચૂરણ કામો * છે, જે કહેતા ફક્ત ફેન્સી માર્ગ છે, આ બૉક્સમાં એક સરનામું જાય છે. અને શું તે સરનામા માટે નો સંદર્ભ લો છે? દેખીતી રીતે, એક કોલસો બનાવો. પરંતુ અમે સંપૂર્ણપણે કરી શકે પૂર્ણાંક * અને અન્ય વસ્તુઓ હોય છે. પરંતુ હવે માટે, ઘરનાં પરચૂરણ કામો * ખરેખર સૌથી છે સરળ અને રસ છે. તેથી આ સમસ્યા રહ્યું છે ફરીથી, જોકે, વધે. હું આ કાર્યક્રમ ખોલો ધારો. હવે અમે આગાહી કરી શકો છો ચાલો જોવા જો શું આ કોડ સાથે ખોટું છે. આ કાર્યક્રમ તેથી, નકલ-0, હું છું આગળ વધો અને ફરીથી કહી રહ્યા GetString અને ઓ માં કિંમત સ્ટોર કરે છે. અને પછી, શા માટે હું આ કરી રહ્યો છું માત્ર અઠવાડિયા ભૂતકાળની રિમાઇન્ડર તરીકે? અમે તે GetString કહે કર્યું ક્યારેક નલ આપે છે. તે શું અર્થ છે જો GetString નલ આપે? કંઈક ખોટું થયું હતું. તે કદાચ શબ્દમાળા પણ છે એનો અર્થ એ થાય મોટા, મેમરીનો કમ્પ્યુટરની બહાર. તે સુપર, સુપર, સુપર થાય ભાગ્યે જ, પરંતુ તે બની શકે છે. અમે તે માટે ચેક કરવા માંગો છો, અને તે અમે કરી રહ્યા છીએ બધા છે. જો તમે ન કરો તો અમે હવે જોશો કારણ કે વસ્તુઓ માટે habitually ચકાસણી શરૂ નલ જેમ, તમે કદાચ ખરેખર જાઓ શરૂ મેમરી સરનામાંઓ માટે અમાન્ય કે છે. અને તમે પ્રેરીત શરૂ રહ્યા છીએ વધુ અને વધુ સેગ્મેન્ટેશન ખામી. અથવા મેક અથવા પીસી, માત્ર કમ્પ્યુટર કારણ અટકી અથવા કાર્યક્રમ સંભવિત, સ્થિર. તેથી હવે, હું કોપી 0.c માં દાવો હું માર્ગ દ્વારા આ શબ્દમાળાઓ નકલ કરીશ 28 લીટી. અને પછી, હું જાઉં છું તળિયે દાવો અહીં હું જાઉં છું કે એક તેમને બદલવા માટે. તેથી આ નોટિસ. હું અમારા જૂના મિત્ર strlen કૉલ છું. અને માત્ર ઇંગલિશ માં સમજાવવું આ વાક્ય 34 શું કરવાનું છે? શું ટી કૌંસ 0 કરે ડાબી પર રજૂ કરે છે. અરે વાહ. પ્રેક્ષક: ટી પ્રથમ અક્ષર? ડેવિડ જે MALAN: ટી પ્રથમ અક્ષર. આ તે છે. ટી પ્રથમ અક્ષર છે, હું માંગો છો આ મોટા આવૃત્તિ સોંપી ટી માં પ્રથમ અક્ષર. તેથી આ અક્ષરો છે પ્રથમ અક્ષર. અને પછી, ખૂબ જ છેલ્લા વસ્તુ હું આ કાર્યક્રમ છે હું અહીં છે દાવો મૂળ, ઓ, અને અહીં નકલ, ટી છે. પરંતુ વાર્તા પર આધારિત અમે માત્ર , શબ્દમાળાઓ ખરેખર છે તે વિશે જણાવ્યું ખરેખર રેખા 28 છે કરી, અને શું છે જવા પરિણામી ભૂલ સ્ક્રીન પર હોય? તેથી પ્રથમ, પ્રથમ પ્રશ્ન, 28. શબ્દમાળા ટી = ખરેખર શું કરવાનું છે? અમે ડાબી બાજુની પર હોય અહીં બાજુ શબ્દમાળા ટી = ઓ; કે મને એક બોક્સ આપે છે અહીં અને એક બોક્સ અહીં. અને, આ સરનામું 0x છે ધારવું માતાનો આપખુદ, આ સમય, કહે 50 કરીએ. શું શબ્દમાળા ટી = ઓ કરે હૂડ નીચે છે? AUDIENCE: [અશ્રાવ્ય] ડેવિડ જે MALAN: તે મેમરી સંગ્રહ ત્યાં સંબોધવા, તેથી 0x50 ત્યાં જાય છે. હવે તેથી, જો હું પ્રથમ પર જાઓ ટી માં અક્ષર અને તે મોટા, હું અસરકારક રીતે ઓ શું કરી રહ્યો છું? હું ખરેખર અધિકાર, આ જ વાત કરી રહ્યો છું? કારણ કે જો સરનામું 0x50-- અને માત્ર, હું અહીં બોર્ડ પર ઘણી જગ્યા નથી, પરંતુ, આ અહીં નીચે 0x50 છે કે ધારે મારા કમ્પ્યુટર મેમરી ક્યાંક. અને હું, ઉદાહરણ તરીકે, ગાબે છે આ જેમ, અહીં લોઅરકેસ માં. અને હું જણાવ્યું હતું કે, ટી કૌંસ 0 મૂડીગત નહીં. વેલ, ટી કૌંસ 0 છે ટી માં પ્રથમ અક્ષર. તેથી ઓછી જી રહ્યું છે બની મોટા જી પરંતુ સમસ્યા શું પણ નિર્દેશ છે નથી છે? પ્રેક્ષક: આ જ. ડેવિડ જે MALAN: આ જ ચોક્કસ વસ્તુ. તેથી કદાચ એક સરળ સમજૂતી, સિન્ટેક્ષ થોડી વિચિત્ર હોય તો પણ. તેથી આ કરવા દો. ./copy-0 પછી કોપી 0 કરો અને. કંઈક કહો: ગાબે. અને ના કમનસીબે, બંને તેમને હવે મૂડીગત કરવામાં આવી છે, પરંતુ તે માટે અંતર્ગત અમે ફક્ત છો કારણ હવે સરનામાં સાથે વ્યવહાર. તેથી અમે કેવી રીતે શરૂ કરવું સરનામાં કોઈ પન intended-- અમે સંબોધવા શરૂ કેવી રીતે આ ચોક્કસ સમસ્યા? વેલ, copy1.c માં, વસ્તુઓ ચાલુ છે થોડી વધુ જટિલ વિચાર. પણ હું એક દાવો કરશે સરળ સરળ ઉકેલ. પ્રથમ નજરમાં વિચાર તેથી હાર્ડ. પ્રથમ માટે સરળ હોઈ ચાલે નથી સમય તમે, કદાચ, તે લખો પરંતુ સમસ્યા એ છે કે જો ફક્ત ટી = ઓ માત્ર કરી નકલો સરનામું, શું, ફરી હું તમને પર પસંદ કરી શકો છો જો, ઉકેલ હોઈ ચાલે છે ખરેખર એક શબ્દમાળા નકલ માટે? પ્રેક્ષક: અમે કદાચ પડશે ફરીથી લૂપ વાપરો. ડેવિડ જે MALAN: અરે વાહ. તેથી અમે ફરીથી લૂપ જરૂર જઈ રહ્યાં છો. અને અમે નકલ કરવા માંગો છો, કારણ કે અન્ય શબ્દમાળા એક શબ્દમાળા ઓ, અમે કદાચ તે કરવા માંગો છો અક્ષર દ્વારા પાત્ર. પરંતુ સમસ્યા છે, છે આ મૂળ ઓ છે હવે અમે સ્પષ્ટપણે શરૂ કરવાની જરૂર છે ટી માટે મેમરી ફાળવણી. અન્ય શબ્દોમાં, ચાલો આ એક છેલ્લા સમય redraw. આ શબ્દમાળા ઓ = GetString છે. અને માતાનો સાથે સાથે, અહીં આ મૂકી દો. આ GetString છે. કંઈક માટે અને પછી, ચિત્ર કે પહેલાં તરીકે હોઈ ચાલે છે, ત એક બાય ઈ / 0. કે આ જેવી થોડી કંઈક જુએ છે. અને ઓ તેથી, અમે આ 0x50 કૉલ અને તે 51, 52 જ હશે. તેથી આ 0x50 છે. અને પછી, હું શબ્દમાળા ટી છે. મેમરી માં, કે જે હમણાં જ ચાલી રહ્યું છે મને આ જેવી થોડી ચોરસ આપે છે. તેથી કી પગલું હવે શું છે? હું ટી માં ઓ નકલ કરવા માંગો છો, શું ખાલી અમે અહીં ભરવા માટે જરૂર છે? અથવા આપણે શું જરૂર છે ઊંચા સ્તરે છે? અરે વાહ? કોઇએ? અરે વાહ. પ્રેક્ષક: અમે [અશ્રાવ્ય] જરૂર છે. ડેવિડ જે MALAN: અરે વાહ, અમે આ ખાલી ભરો જરૂર છે. હું પછી નકલ અને ન કરી શકો છો ગાબે નામ ઉઠાવે હું ઓપરેટિંગ સિસ્ટમ પૂછો સુધી મેમરી અન્ય ભાગ માટે કે મૂળ તરીકે ઓછામાં ઓછા તરીકે મોટી છે. જેથી એક પ્રશ્ન સાથે નહીં. હું ઓપરેટિંગ સિસ્ટમ નથી પૂછો કેવી રીતે માત્ર એક સરળ થોડું નિર્દેશક માટે આ કહે છે, એક સરનામું, નિર્દેશક નથી એક સરળ નાના બોક્સમાં માટે આ જેવી શબ્દમાળા કહેવાય? હું કેવી રીતે ઓપરેટિંગ પૂછો નથી મેમરી એક મોટા ભાગ માટે સિસ્ટમ? આમ અત્યાર સુધીમાં, હું માત્ર તે પાછા મેળવેલ કર્યું આડકતરી GetString કૉલ દ્વારા. આમ કેવી રીતે GetString છે તેના મેમરી મેળવવામાં પણ? ઠીક છે, તે છે તે બહાર કરે છે અહીં આ અન્ય કાર્ય કે અમે હવે વાપરવા માટે શરૂ કરી શકશો. હવે, આ રીતે વધુ ભેદી than-- લાગે અને હું તેને જોઈ શકે છે જે માત્ર એક જ છું આ વાક્ય રીતે વધુ ભેદી લાગે છે પછી તે પ્રથમ નજરમાં જોઈએ. પરંતુ તે સિવાય પીંજવું દો. ડાબી બાજુ પર, હું ઘરનાં પરચૂરણ કામો * ટી છે. ઇંગલિશ માં તેથી, ચાલો તૈયાર કરવા માટે શરૂ કરો ટેકનિકલ કલકલ યોગ્ય વાક્યો. તેથી આ ફાળવણી છે પ્રકાર ચાર ચલ ટી કહેવાય *. હવે, કે ખરેખર શું અર્થ છે? ઠીક છે, કે જે થાય છે, હું શું કરીશ ટી કહેવાય ચલ મૂકવા? ચાર રચે એક સરનામું. જેથી, માત્ર સરળ છે વધુ વાજબી રીતે ડાબી બાજુ વર્ણન. જેથી અહીં માત્ર આ બોક્સ બનાવે છે. તેથી બાજુ જમણી બાજુ, કદાચ, રહ્યું છે મોટા કે ફાળવવા માટે મેમરી કેવી રીતે ભાગ? તેથી આપણે આ સિવાય પીંજવું દો. તે પ્રથમ નજરમાં જબરજસ્ત છે પરંતુ અંદર અહીં શું થઈ રહ્યું છે? પ્રથમ, malloc, છે જે અમારા નવા મિત્ર, દેખીતી રીતે છે "મેમરીને ફાળવવા." તેથી આ પસાર થઈ રહી દલીલ છે તેને, તેથી તે એક સુંદર મોટી દલીલ છે. તેથી આપણે આ સિવાય પીંજવું દો. ઓ strlen, અલબત્ત, રજૂ કરવું પ્રેક્ષક: અક્ષરો સંખ્યા. ડેવિડ જે MALAN: જસ્ટ ઓ માં અક્ષરો સંખ્યા. તેથી ઓ લંબાઈ, મૂળ શબ્દમાળા. તેથી જી એક બાય ઈ. તેથી તે કદાચ ચાર આ કિસ્સામાં છે. શા માટે હું પછી +1 કરી રહ્યો છું ઓ strlen કૉલ? AUDIENCE: [અશ્રાવ્ય] ડેવિડ જે MALAN: તે માટે ખાસ નલ પાત્ર. તમે મને પૂછો તો લંબાઈ શું ગાબે નામ, હું ચાર કહેવું જાઉં છું. હૂડ નીચે, જોકે, હું જરૂર નલ પાત્ર માટે કે પાંચમા બાઇટ. હું +1 કરી રહ્યો છું તેથી કે શા માટે છે. હવે માત્ર કિસ્સામાં તમે આ ચાલી રહ્યું છે કરતાં અન્ય કમ્પ્યુટર પર કાર્યક્રમ, કહે છે, CS50 સાધન, જ્યાં ચાર રચે માપ અલગ હોઈ શકે છે મારી પોતાની કમ્પ્યુટર માંથી હું આ કૉલ કરી શકે છે ઓપરેટર sizeof, માત્ર, કમ્પ્યૂટર પૂછો એક માપ છે આ કમ્પ્યુટર પર ઘરનાં પરચૂરણ કામો? અને આ પાંચ ગુણાકાર દ્વારા ચાર રચે માપ દ્વારા ઉદાહરણ, જે સૌથી કમ્પ્યુટર્સ પર ચાલશે માત્ર એક, malloc કરી મને આ મોટા માટે ફાળવી રહ્યું છે અહીં જમણી બાજુ પર પર મેમરી ભાગ. અને તે પાછા બનશે તે છે તેથી તે કાર્ય છે શું મને પરત ચાલી રહ્યું? પ્રેક્ષક: આ સરનામું? ડેવિડ જે MALAN: શું આ સરનામું? પ્રેક્ષક: મેમરી ઓફ તે ફાળવણી? ડેવિડ જે MALAN: ના મેમરી તે ફાળવવામાં આવે છે. તેથી હું પ્રમાણિકપણે, કોઈ વિચાર હોય છે જ્યાં આ અંત રહ્યું છે. હું પ્રસ્તાવ જાઉં છું તે 0x88 અંતે અંત બનશે. સંપૂર્ણપણે મનસ્વી છે, પરંતુ 0x50 કરતાં અન્ય ક્યાંક, ઓપરેટિંગ સિસ્ટમ, કારણ કે તે વિન્ડોઝ અને Mac OS મારા માટે શું છે, તે આપી દીધો છે કે નહીં તેની ખાતરી મને RAM ની અલગ હિસ્સામાં. તેથી આ કિંમત છે આ છે મેમરી ભાગ અંત શકે છે. તેથી આ 0x88, અહીં થાય છે. તેથી હવે સ્પષ્ટ રીતે, હું સમજી શકે આ એ જ નથી કે, તેઓ નિર્દેશ કરતી રહ્યાં છો કારણ કે મેમરી વિવિધ હિસ્સામાં. હવે હું ખરેખર આ નકલ કરવા માંગો છો તેથી જો માં, ચાલો તમારા સૂચિત ઉકેલ કરવા દો. , ચાલો માત્ર જાઓ લૂપ માટે બનાવવા દો અને ટી કૌંસ કરી હું કૌંસ હું નહીં. હવે હું ઉપયોગ કરી શકો છો કારણ કે આ એરે જેવી સંકેત, કારણ કે, તેમ છતાં malloc ખૂબ સામાન્ય મને મેમરી ફાળવે, મેમરી માત્ર સંલગ્ન બાઇટ્સ છે. બાઇટ, બાઇટ, બાઇટ, પાછા પાછળ પાછળ. હું પ્રોગ્રામર તરીકે ચોક્કસ કરી શકો છો ઝાકઝમાળ, તરીકે સારવાર જે હું આ છેલ્લે પરિચિત ઉપયોગ કરી શકો છો છે માત્ર કેટલાક ચોરસ કૌંસ ના સંકેત. તેથી મને, કારણ કે ત્યાં વિરામ દો આ પણ, બધા એક જ સમયે ઘણો છે મૂળભૂત વિચાર રીકેપ માટે છતાં કે જેઓ શબ્દમાળા છે, આ બધા સમય, નવી માહિતી પ્રકાર સે દીઠ નથી. તે માત્ર એક કહેવાતા નિર્દેશક છે એક અક્ષર એક સરનામું, જે માત્ર અર્થ એ થાય કે તે એક નંબર છે કે માનવ સંમેલન દ્વારા અમે 0x કંઈક તરીકે લખી છે. પરંતુ તે માત્ર એક નંબર છે 33 ઓક્સફર્ડ સ્ટ્રીટ જેમ, જે બને છે સીએસ ઇમારતની સરનામું. આ વિગતો પર કોઈપણ પ્રશ્ન છે? અરે વાહ? પ્રેક્ષક: શા માટે અમે તપાસ કરી સમાન ટી માટે null છે? ડેવિડ જે MALAN: અમે શા માટે કરવું નલ બરાબર ટી માટે ચકાસવા? અમે documentation-- વાંચી તો malloc માટે મહાન question--, તે દંડ પ્રિન્ટ કહેવું રહ્યું છે ક્યારેક malloc, નલ પાછા શકે માત્ર GetString જેમ. અને ખરેખર, GetString નલ આપે , બદલામાં, malloc નલ આપે છે, GetString malloc વાપરે છે. ઓએસ અને જો કે, થાય શકે મેક ઓએસ, વિન્ડોઝ, ગમે, ખાલી છે તમારા માટે મેમરી સમાપ્ત. જેથી ત્યાં શું થયું છે. અને મને એક અન્ય વસ્તુ ઉઘાડી દો કે જે હમણાં જ તમારા મન તમાચો શકે છે અથવા સંપૂર્ણપણે ખૂબ દૂર લીટી પર છે. પરંતુ મને ખેંચવાનો દો નકલ માટે લૂપ માટે જ છે, જે ક્ષણ પહેલા, સ્મૃતિ હતી આ. ટી કૌંસ હું ઓ કૌંસ હું નહીં. સરસ અને વપરાશકર્તા મૈત્રીપૂર્ણ. ફરીથી અઠવાડિયું બે જેવી લાગે છે. પરંતુ આ આવૃત્તિ ખરેખર બની શકે છે ભેદી લાગે છે કે જે આ છે, એ ફરીથી લખી. તે એક ટેકનિક કહેવાય નિર્દેશક છે અંકગણિત, સરનામું અંકગણિત. પરંતુ શા માટે આ કામ કરે છે? હવે annoyingly, આ સી લેખકો ઉપયોગ કરવાનો નિર્ણય લીધો વિવિધ હેતુઓ માટે * પ્રતીક. અમે તે પહેલાથી જ વાર ઉપયોગ જોઇ છે એટલે કે ઘરનાં પરચૂરણ કામો *, "મને એક ચલ આપી કે છે બનશે ચાર રચે ની સરનામું. " કે સંદર્ભમાં તેથી ઘરનાં પરચૂરણ કામો * "મને એક ચલ આપે છે." અર્થ એ થાય કમનસીબે, તમે * વગર વાપરો તે આગળ એક શબ્દ, ચાર જેમ, તે હવે કહેવાય છે આ ડિરેફરન્સ ઓપરેટર. અને અમે લાંબા પહેલાં આ વધુ જોવા મળશે. પરંતુ તે માત્ર "ત્યાં જાઓ." એનો અર્થ એ થાય કોઇ મને આપ્યો તો, કહેતા જેવું છે કાગળ એક ભાગ પર "33 ઓક્સફર્ડ સ્ટ્રીટ," હું "* 33 ઓક્સફર્ડ સ્ટ્રીટ," જો કે એનો અર્થ એ થાય "આ સીએસ મકાન માટે માર્ગ નીચે જાઓ." તેથી * માત્ર ત્યાં જાઓ જો અર્થ તે સામે કોઈ શબ્દ છે. તેથી સ્પષ્ટ છે, ટી શું છે? ટી ના ભાગ ના સરનામું મને પાછા આપવામાં આવી હતી કે મેમરી. ઓ, સ્પષ્ટ કરવા શું, સરનામું છે આ ઉદાહરણમાં આપણે ચર્ચા કરવામાં આવી છે, લોઅરકેસ ગાબે ના? ઓ સરનામું છે of-- પ્રેક્ષક: આ શબ્દમાળા. ડેવિડ જે MALAN: ગાબે મૂળ નામ છે. તેથી તે સરનામું છે મેમરી આ ભાગ. તેથી હું કહી જો ટી + + એ સિવાય હું હું નોટિસ, અમારા જૂના મિત્ર છે. તે માત્ર એક ઇન્ડેક્સ ચલ છે કે પર શૂન્ય માંથી વારો છે શબ્દમાળા ઓ લંબાઈ છે. તેથી તે, પછી શૂન્ય, એક જ હશે પછી બે, પછી ત્રણ, તો પછી ચાર. તેથી આપણે આ નવા ભેગા દો સ્ક્રેચ જેવા પઝલ ટુકડાઓ, તમે કરશે જો, છતાં પણ, ફરીથી, આ વાક્યરચના સ્ક્રેચ કરતાં વધુ arcane છે. તેથી ટી એક સરનામું + + છે હું મને આપી રહ્યું છે એક નંબર, આ કારણ છે અમે હેક્સ તરીકે ચિત્રકામ કરવામાં આવ્યા છે કે નંબરો. પરંતુ તેઓ માત્ર નંબરો છો. ટી ના સરનામા અમે જણાવ્યું હતું કે તેથી જો હતી 0x88, 0x88 વત્તા શૂન્ય છે. તમે આરામદાયક નથી, તો પણ હજુ સુધી હેક્સ સાથે, એક અનુમાન છે. પ્રેક્ષક: મૂળ. ડેવિડ જે MALAN: 0x88 છતાં. તેથી * શું અર્થ 0x88 છે? તે અર્થ એ થાય કે જે "ત્યાં જાઓ", એનો અર્થ એ થાય અસરકારક રીતે, "અહીં તમારી આંગળી મૂકો." અને હવે જમણી બાજુ પર આ સમીકરણ, * અને પછી parens માં, ઓ હું, કે જે અર્થ એ થાય ઓ + + અહીં થોડી ગ્રામ અપ સંબોધવા. ઓ + + 0, અલબત્ત, છે ગમે ઓ, છે. તેથી હવે, તે * ઓ છે, જે માત્ર * 33 જેવા ઓક્સફર્ડ સ્ટ્રીટ સરનામું પર જાઓ અર્થ એ થાય ઓ. અહીં આ આંગળી, જમણા હાથમાં છે. તેથી શું હું શું નકલ કરીશ? છે, કે જે જમણી બાજુ પર આ બાબત, ગાબે, અહીં માં અહીં થોડી ગ્રામ,. કે અને તેથી અસર લૂપ પ્રથમ પુનરાવૃત્તિ, તમે તેને લાગે છે, તેમ છતાં દરખાસ્ત તરીકે કંઈપણ કરતાં ક્રેઝી વધુ જટિલ અમે પહેલાં જોઇ છે માત્ર કહી રહ્યાં છે અહીં જાઓ અને અહીં અક્ષર નકલ કરો. તે તમે બંને સ્થાનો પર એક નકશો આપી દીધો છે. અને અમે આ વધુ જોશો. પરંતુ હવે માટે, આશા માત્ર છે આ મૂળભૂત વિચારો કેટલાક દાખલ. અને ખરેખર, ચાલો જોવા દો અહીં એક અંતિમ કાર્યક્રમ, અને પછી વચન ક્લેમેશન, જે બધું બધા અધિકાર કરશે. અધિકાર છે. તેથી મને ત્યાં અમે જાઓ ઘણું ખોલો. અમે પાછા આવવા પડશે me-- તેથી દો લાંબા પહેલાં આ ચિત્ર છે. મને અહીં આ અંતિમ ઉદાહરણ ખોલો. અહીં એક સુપર, સુપર છે પરિપૂર્ણ કે કાર્યક્રમ નીચેના કરે છે જીવનમાં કંઈ નથી. તે પ્રથમ બે ચલો, એક્સ જાહેર અને આ સમય નંબરો નથી કે વાય, સે દીઠ. તેઓ સે દીઠ, પૂર્ણાંકો નથી. તેઓ * દેખીતી રીતે છે પૂર્ણાંક. તેથી માત્ર કોઈને, તે શું અર્થ છે તમારી માહિતી પ્રકાર છે, તમારા ચલ, પ્રકાર પૂર્ણાંક * તારો છે? કે પૂર્ણાંક ની સરનામા છે. તેથી હું તે હજુ સુધી છે કે જ્યાં કોઈ વિચાર કર્યું. તે માત્ર ", છેવટે, મૂકવા અર્થ અહીં પૂર્ણાંક ની સરનામું. " તે છે ત્યાં 0x50, 0x88, મેમરી, એક સરનામું ત્યાં રહ્યું છે. અને તે વાય શું છે પણ, હોઈ ચાલે. હું હવે કહે તો એક્સ = malloc ((પૂર્ણાંક) sizeof), આ કહેતા ફેન્સી માર્ગ છે, હેય ઓપરેટિંગ સિસ્ટમ, malloc દ્વારા, માપ માટે મને પૂરતી મેમરી આપી કદાચ, કે જે પૂર્ણાંક છે, 32 બિટ્સ અથવા ચાર બાઇટ્સ જ હશે. તેથી malloc શું પાછા છે? Malloc એક સરનામું આપે છે. તેથી શું એક્સ સંગ્રહિત કરી રહ્યું છે? ના ભાગ ની સરનામું મેમરી, ચાર બાઇટ્સ, કે malloc માત્ર પૂછીને મારા માટે જોવા મળે છે ઓપરેટિંગ સિસ્ટમ. હવે દરમિયાન, રેખા અહીં ચાર, આ * એક્સ = 42. જસ્ટ સ્પષ્ટ કરવા નીચે ત્યાં શું ચાલી રહ્યું છે? ડાબી બાજુ પર, * એક્સ. કે * 33 ઓક્સફર્ડ સ્ટ્રીટ જેવું છે. તેથી * એક્સ શું અર્થ થાય છે? પ્રેક્ષક: પર જાઓ. ડેવિડ જે MALAN: તે સરનામા પર જાઓ. ત્યાં કે ભાગ મેમરી તે પર જાઓ છે. અને દેખીતી રીતે, શું ત્યાં મૂકી? પ્રેક્ષક: 42. ડેવિડ જે MALAN: 42. બધા હક છે, * વાય જ વિચાર. વાય માં સરનામા પર જાઓ. ત્યાં સંખ્યા 13 મૂકો, પરંતુ આ સમયે વાય શું છે? પ્રેક્ષક: કોઈ મેમરી વાય માટે છે. ડેવિડ જે MALAN: ત્યાં વાય માટે કોઈ મેમરી છે. તેથી શું કદાચ વાય કરે અમે કહેતા થઈ છે, છે? પ્રેક્ષક: કચરો. ડેવિડ જે MALAN: કેટલાક કચરો કિંમત. હવે, કચરો કિંમત હજુ પણ નંબર છે. તે હજુ પણ એક સરનામું લેવામાં શકાય. તે કોઈને છતાં છે , નીચે કંઈક લખાયેલી અને હું અર્થ તરીકે ખોટું અર્થઘટન શેરી નીચે કેટલાક મકાન. અને તમે માત્ર જાય પ્રયાસ કરો તમે માલિક નથી કેટલાક મકાન, અથવા મેમરી કેટલાક ભાગ તમે નથી આપવામાં આવી, ખરાબ વસ્તુઓ થાય છે શકે છે. કમ્પ્યુટર કેટલાક અન્ય ભાંગી, અથવા શકે અનિશ્ચિત વર્તન થાય શકે છે. તો પછી, Binky આ ​​પ્રસ્તાવના છે. હું હજુ પણ 20, યાદ કેટલાક વિચિત્ર વર્ષ પછી, હું જ્યારે હું આખરે હતી, જ્યાં પોઇન્ટર સમજી. તમે જો, કહે છે જે ત્રણ મિનિટ અહીં છોડી અને હું નથી લાગે છે પોઇન્ટર સમજી, ખ્યાલ હું 20 માટે યાદ છે કેટલાક ઉન્મત્ત કારણોસર વર્ષ જ્યારે શા માટે તે છેલ્લે સ્તરે માં, મારા શિક્ષણ સાથે બેઠક સાથી, Nishat મહેતા માં એલિયટ ડાઇનિંગ હોલ ઓફ પાછા. હવે, હું યાદ છે આ હતો કારણ કે આ મુદ્દાઓ હું માં એક ચોક્કસ સાથે સંઘર્ષ કર્યો. અને પછી, તે આખરે ક્લિક, જેમ હું વિષયો ઘણો કબૂલ કરું છું છેવટે કરશે. અને હવે, કે જે બધા લાગે બનાવવા માટે ખુશ અને તમામ વધુ સમજી, માતાનો એક અંતિમ નજર અમારા અહીં Binky ખાતે છેલ્લા ત્રણ મિનિટ, અમારા મિત્ર, નિક થી સ્ટેનફોર્ડ માંથી Parlante. [વિડિઓ પ્લેબેક] -Hey, Binky. અપ વેક! તે નિર્દેશક આનંદ માટે સમય છે. કે -શું છે? પોઇન્ટર વિશે જાણો! ઓહ, એક જાતની મીઠાઈ! -વેલ, પ્રારંભ કરવા માટે, અમે છો ધારી બે પોઇંટરો જરૂર જઈ. -OK. આ કોડ છે, બે પોઇંટરો ફાળવે જે પૂર્ણાંકો માટે નિર્દેશ કરી શકો છો. -OK. ઠીક છે, હું બે પોઇંટરો જુએ છે, પરંતુ તેઓ કંઈપણ પોઇન્ટ લાગે છે નથી. એટલે સાચું છે. શરૂઆતમાં, પોઇંટરો કંઈપણ માટે નિર્દેશ નથી. તેઓ કહે છે માટે નિર્દેશ આ વસ્તુઓ pointees, અને માતાનો તેમને સુયોજિત એક અલગ પગલું. અધિકાર, અધિકાર, -Oh. હું જાણતા હતા કે. આ pointees અલગ છે. Er છે, જેથી તમે કેવી રીતે એક pointee ફાળવવા છે? -OK. વેલ, આ કોડ ફાળવે નવી પૂર્ણાંક pointee, અને આ ભાગ સેટ એક્સ તે માટે નિર્દેશ. -Hey, કે વધુ સારી દેખાય છે. તેથી તે કંઈક છે. -OK. હું નિર્દેશક એક્સ ડિરેફરન્સ પડશે તેના pointee માં 42 નંબર સ્ટોર કરે છે. આ યુક્તિ માટે, હું જરૂર પડશે મારા Dereferencing ના મેજિક વાન્ડ. Dereferencing ના -તમારા મેજિક વાન્ડ? તેનો કે મહાન છે. -આ કોડ શું લાગે છે. હું માત્ર નંબર, અને [પીઓપી] સુયોજિત પડશે -Hey, જુઓ. ત્યાં તે જાય છે. એક્સ નીચે પર ખોટો સંદર્ભ કરી -તેથી તીર તેના pointee ઍક્સેસ કરવા માટે. આ કિસ્સામાં, ત્યાં એક સ્ટોર 42. અરે સંખ્યા સંગ્રહવા માટે તે ઉપયોગ કરવાનો પ્રયાસ કરો અન્ય નિર્દેશક દ્વારા 13, વાય. -OK. હું માત્ર વાય માટે અહીં પર જઈશ, અને સંખ્યા 13 સેટ અપ છે. અને પછી, ના વાન્ડ લેવા Dereferencing છે અને માત્ર [ચેતન] -Oh! હેય, -Oh! તે કામ ન હતી. Binky, હું dereferencing લાગતું નથી, કહો તમે જાણો છો, કારણ કે વાય, એક સારો વિચાર છે આ pointee સુયોજિત એક અલગ પગલું છે. અને હું અમે ક્યારેય તે કર્યું નથી લાગતું નથી. -Good બિંદુ. -Yeah. અમે નિર્દેશક વાય ફાળવવામાં પરંતુ અમે ક્યારેય એક pointee માટે નિર્દેશ સુયોજિત કરો. -Very સચેત. -Hey, તમે ત્યાં Binky સારી શોધી રહ્યાં છે. તમે કે જેથી તેને ઠીક કરી શકે છે વાય પોઇન્ટ એક્સ તરીકે જ pointee માટે? -Sure. હું મારા મેજિક વાન્ડ ઉપયોગ કરશો પોઇન્ટર સોંપણી ના. હોઈ ચાલે છે કે નબળી ગણાય છે પહેલાં જેવી સમસ્યા? -કોઈ. આ pointees સ્પર્શ નથી. તે માત્ર એક નિર્દેશક બદલે અન્ય જેવા જ વસ્તુ માટે નિર્દેશ. -Oh, હું જુઓ. એક્સ તરીકે જ જગ્યાએ હવે વાય નિર્દેશ કરે છે. તેથી રાહ જુઓ. હવે, વાય સુધારેલ છે. તે એક pointee છે. તેથી તમે આ લાકડી પ્રયાસ કરી શકો છો 13 ઉપર મોકલવા માટે ફરી dereferencing. ઠીક છે, -Uh. અહીં તે જાય છે. [પીઓપી] -Hey, કે જુઓ. હવે વાય પર કામ કરે છે dereferencing. અને પોઇન્ટર શેર કરી રહ્યાં છે કારણ કે એક pointee છે, તેઓ બંને 13 જુઓ. -Yeah. શેરિંગ, ગમે. તેથી અમે હવે સ્થાનો સ્વિચ જવું છે? ઓહ, લાગે છે. અમે સમય નથી. -But-- ત્રણ નિર્દેશક નિયમો યાદ-ફક્ત. નંબર વન, મૂળભૂત માળખું તમે એક નિર્દેશક હોય છે, અને તે pointee પર નિર્દેશ કરે છે. પરંતુ નિર્દેશક અને pointee, અલગ છે અને સામાન્ય ભૂલ નિર્દેશક સુયોજિત કરવા માટે છે, પરંતુ તે pointee આપી ભૂલી છે. સંખ્યા બે, નિર્દેશક dereferencing નિર્દેશક પર શરૂ થાય છે અને ઉપર તેના તીર નીચે તેના pointee ઍક્સેસ કરવા માટે. આપણે બધાં જ જાણીએ, આ જો ત્યાં માત્ર કામ કરે છે એક pointee છે, કે જે પ્રકારની નંબર વન શાસન પાછા મળે છે. સંખ્યા ત્રણ, નિર્દેશક સોંપણી એક નિર્દેશક લે છે અને નિર્દેશ કરવા માટે તેને બદલે છે અન્ય નિર્દેશક તરીકે જ pointee. સોંપણી પછી તેથી, બે પોઇન્ટર એ જ pointee માટે નિર્દેશ કરશે. ક્યારેક, કે શેરિંગ કહેવાય છે. અને તે ખરેખર, તે ત્યાં છે બધા છે. બાય બાય હવે. [સમાપ્ત વિડિઓ પ્લેબેક] ડેવિડ જે MALAN: તે CS50 માટે છે. અમે આગામી સપ્તાહે તમે જોશો.