[સંગીત વગાડવાનો] ડેવિડ જે MALAN: બધા અધિકાર. આ CS50 છે. અને આ અઠવાડિયે 5 ના શરૂઆત છે. અને તમે સૂચન કર્યું છે, કારણ કે આ સામગ્રી કેટલાક થોડી વધુ રહ્યો છે જટિલ, નાના વધુ પડતા. અને તે ખાસ કરીને જો ખૂબ જ સરળ છે તમે અમુક સમય માટે આદત કરી છે સૌથી નીચે બેદરકારીપૂર્વક કરવાનો પ્રયાસ કરી શકાય અમે કંઈપણ, અમે વર્ગ કહી રહ્યાં છે. પરંતુ તે કદાચ નથી, ખ્યાલ આદર્શ શિક્ષણશાસ્ત્ર વિષયક અભિગમ સામગ્રી આ પ્રકારની શીખવા માટે, અને સામગ્રી વધુ સામાન્ય રીતે. અને તેથી અમે કરવા માટે ઉત્સુક છે કે CS50 પોતાના Gheng જાહેરાત ગોંગ તૈયાર શરૂ કરી દીધી છે નોંધો એક પ્રમાણભૂત સમૂહ આ કોર્સ માટે, આશા જે આ, કે જે એક છે માત્ર એક તરીકે સેવા સંદર્ભ અને સાધન સામગ્રી સમીક્ષા અને જવા માટે પાછા સામગ્રી દ્વારા હોઈ શકે છે કે આસપાસ તમે પ્રથમ વખત ભાગી પરંતુ પણ છે કે જેથી તમારા માથા હોઈ શકે છે વધુ નીચે, ત્યારે તે કરતાં અપ લેક્ચર સમય આવે છે, તમે સંલગ્ન શકે છે કે જેથી વધુ વિચારપૂર્વક, તરીકે વધુ scribbly વિરોધ. સાથે કહ્યું હતું કે, તમે પર મળશે શું વેબસાઈટ આ જેમ કે દસ્તાવેજો છે. અને નોટિસ, શીર્ષ પર ડાબે, છે માત્ર સમાવિષ્ટો એક ટેબલ, પણ સમય કોડ કે તરત જ તમે કૂદી જશે યોગ્ય ભાગ વિડિઓ ઓનલાઇન. અને અહીં શું ચાંગ કર્યું છે , અનિવાર્યપણે, દસ્તાવેજીકૃત થયેલ છે શું આ થયું ખાસ વ્યાખ્યાન. અને વ્યાખ્યાન ઘણા છે પહેલેથી ઓનલાઇન હવે આ URL સાથે. અને અમે બાકીની પોસ્ટ કરવા માટે ચાલુ રાખીશું આ અઠવાડિયાના અંત સુધીમાં તે, જેથી સાધન લાભ લેવા નથી. જેથી વધુ હેરાનગતિ વિના, અમે પાછા છાલ શરૂ છે કે આ સ્તર કેટલાક સમય માટે શબ્દમાળા. અને અમે શબ્દમાળા શું કહ્યું ખરેખર છેલ્લા અઠવાડિયે છે? તેથી ચાર સ્ટાર. અને ચાર સ્ટાર, સાથે સાથે, શું કે ખરેખર કહેવા માંગતા હતા? વેલ, આ બધા સમય, અમે કર્યું હોય તો એક કાર્ય ફોન કરવામાં, getString, અને સ્ટોર જેવી કહેવાતા વળતર એક માં getString બજારમૂલ્ય ચલ તે કહે છે અમે લખાણ થઈ શબ્દમાળા ઓ પ્રકાર ત્યાં ઉપર કોડ લીટી. હું જોઈ અને જ્યારે તે માત્ર છે મારા હસ્તાક્ષર અહીં વધી હું આ છે માત્ર કેવી રીતે ભયાનક ખ્યાલ નથી. જો કે, ચાલો ધારે છે કે દો, જમણી બાજુ પર , તેમ છતાં, એક વાજબી છે શું નિરૂપણ આ ચાલુ કરવામાં આવી GetString સાથે સમય. getString, અલબત્ત, એક શબ્દમાળા મળે છે. પરંતુ તે ખરેખર શું અર્થ છે? તે એક ભાગ મળે છે એનો અર્થ એ થાય ઓપરેટિંગ સિસ્ટમમાંથી મેમરી એક કાર્ય ફોન દ્વારા, malloc કહેવાય છે. પરંતુ વધુ કે પર પછી. અને પછી તે રચે મેમરી કે ભાગ અક્ષરો સાથે વપરાશકર્તા છે , માં ટાઇપ દ્વારા અનુસરવામાં, અલબત્ત, એક નલ પાત્ર, અથવા બેકસ્લેશ ખૂબ જ ઓવરને અંતે શૂન્ય. દરમિયાન, ડાબી બાજુ પર આ વાર્તા, આ બધા સમય, અમે ના જેવું, એક ચલ જાહેર કરવામાં આવ્યા છે. અને તે ચલ હવે શું છે નિર્દેશક કૉલ શરૂ કરશે. તે જે અંદર એક બોક્સ નથી અમે શબ્દમાળા મૂકી, Daven, સે દીઠ, પરંતુ અમે તે ચોરસ મૂકી ડાબી શું બરાબર પર બોક્સ? અરે વાહ? પ્રેક્ષક: આ સરનામું જ્યાં તે મેમરીમાં સ્થિત થયેલ છે. ડેવિડ જે MALAN: ચોક્કસ. Daven જ્યાં ઓફ સરનામું મેમરી આવેલી છે. અને Daven તમામ સ્થિત થયેલ છે નથી જ્યાં સે દીઠ, પરંતુ ખાસ સરનામાં શું? અરે વાહ? પ્રેક્ષક: પ્રથમ અક્ષર. ડેવિડ જે MALAN: આ પ્રથમ અક્ષર આ કિસ્સામાં Daven, જે માં, હું આપખુદ હતો દરખાસ્ત અને unrealistically 1, Ox1, જે માત્ર અર્થ એ થાય 1 હેક્સાડેસિમલ નંબર. પરંતુ તે કદાચ ચાલી રહ્યું છે બહુ મોટા નંબર હોઈ અમે ડ્રો શકે છે એક ઉપસર્ગ તરીકે 0x સાથે, એક હેક્સાડેસિમલ પાત્ર રજૂ. અને અમે જ્યાં જાણવાની જરૂર નથી કારણ કે Daven ના અક્ષરો બાકીના કારણ કે, શું સરળ ડિઝાઇન નિર્ણય ઘણા વર્ષો પહેલા કરવામાં આવી હતી કે? અરે વાહ? પ્રેક્ષક: બેકસ્લેશ 0. ડેવિડ જે MALAN: અરે વાહ, બરાબર. આ બેકસ્લેશ 0 માં યદ્યપિ, તમે પરવાનગી આપે છે રેખીય સમય, શબ્દમાળા પસાર કરવા માટે, ડાબેથી જમણે જવામાં, લૂપ માટે, અથવા જ્યારે સાથે લૂપ, અથવા કંઈક જેમ કે, અને અહીં, ઓહ, તે નક્કી આ ચોક્કસ શબ્દમાળા ઓવરને છે. પર માત્ર સરનામાથી તેથી શબ્દમાળા શરૂઆત, અમે સમગ્ર ઍક્સેસ કરી શકો છો તે આ બધા કારણ કે જ્યારે, શબ્દમાળા માત્ર એક કોલસો બનાવો સ્ટાર છે. તેથી તેનો ઉપયોગ ચાલુ રાખવા માટે ચોક્કસપણે દંડ છે CS50 પુસ્તકાલય અને આ તાત્વિક, તેથી વાત, પરંતુ અમે પડશે માટે બરાબર જોવા માટે શરૂ શું થઈ રહ્યું કરવામાં આવી છે આ સમગ્ર સમય નીચે. તેથી જો તમે આ ઉદાહરણ યાદ કરી શકે છે, પણ, છેલ્લા સમય, 0 સરખાવવા માટે, જે ખરેખર તુલના ન હતી. પરંતુ અમે આ ઉકેલવા માટે શરૂ કર્યું હતું. પરંતુ કદાચ એક ઓપ, હું કોઈને રસ શકે ગુલાબી હાથી આજે, પણ ચાંગ દ્વારા કરવામાં? કેવી રીતે સામે તમારા વિશે? [અશ્રાવ્ય]. પર આવો. અને આ સમય દરમિયાન, તમે આવી છે, ચાલો માત્ર એક ક્ષણ માટે ધ્યાનમાં શું આ કોડ વાસ્તવમાં કરી હતી. તે બે ચલો સુધી જાહેર છે ટોચ, અને ટી અને GetString કૉલ. આ એક ખૂબ વપરાશકર્તા મૈત્રીપૂર્ણ કાર્યક્રમ નથી તે તમને કહી નથી, કારણ કે શું કરવું. પરંતુ માત્ર અમે છો ધારે ચાલો રસદાર ભાગ પર ધ્યાન કેન્દ્રિત. ઓ બરાબર તો પછી અમે કરવા , તે printf કહેવું જોઈએ ટી બરાબર, તમે આ જ વાત લખ્યો. હેલો. તમારું નામ શું છે? Janelle: Janelle. ડેવિડ જે MALAN: Janelle, તમને મળીને સરસ. તમારા પડકાર તેથી આ હાથી માટે હાથ પ્રથમ અમને શું એક ચિત્ર દોરવા છે તે પ્રથમ બે માં રજૂ કરવામાં આવી રહી છે રેખાઓ. તેથી ઓ અને ટી હોઈ શકે કેવી રીતે સ્ક્રીન પર રજૂ? અને તમે માત્ર સાથે ડ્રો કરી શકો છો આ મોટી સ્ક્રીન પર તમારી આંગળી. તેથી બે છિદ્ર છે કે સમીકરણ દરેક બાજુ. તેથી ડાબી પર ઓ, અને પછી જમણી બાજુ પર getString. અને પછી ટી, ડાબી પર છે અને પછી જમણી બાજુ પર getString. તેથી અમે કેવી રીતે શરૂ થઇ શકે છે એક ચિત્ર દોરવા કે શું થઈ રહ્યું છે રજૂ કરે છે અહીં મેમરી, તમે કહે છે? અને મને તમે સમજાવવા દો દો તમે જાઓ તરીકે તમે શું કરી રહ્યાં છો. Janelle: બરાબર. વેલ, પ્રથમ, તે પૂછવા આવશે તમે ઇનપુટ શબ્દમાળા મળે છે. અને તે માફ કરશો, ઓહ store-- છે. ડેવિડ જે MALAN: બરાબર. સારી. અને આ શું કહે છે? ઠીક છે, ઓહ. જઈને રાખો. હું વિક્ષેપિત માગતી ન હતી. Janelle: માફ કરશો. તેથી તે ઇનપુટ તેને કરશે સરનામાં ખાતરી ન of--. હું બરાબર સંખ્યા યાદ રાખી શકો નહિં, પણ હું તેને 0 સાથે શરૂ કરવામાં આવી હતી છે. ડેવિડ જે MALAN: તે, બધા સાચું છે હું નંબરો બનેલી કારણ કે, તેથી કોઇ યોગ્ય જવાબ છે. Janelle: 0 આર્ક સાથે શરૂ કરી રહ્યા છીએ. ડેવિડ જે MALAN: ઠીક છે, તેથી તત્વ 0. ખાતરી કરો કે. Janelle: અને પછી તો માત્ર બે પત્ર જેવા ડેવિડ જે MALAN: ઠીક છે, તમને પાછા. Janelle: તેથી તત્વ 0, અને પછી તત્વ 1 અથવા તત્વ 2. જે ટુકડો અને: ડેવિડ જે MALAN ચિત્ર તમે હમણાં ચિત્રકામ કરવામાં આવે છે? GetString માટે કૉલ? અથવા ઓ ની જાહેરાત? Janelle: આ જાહેરાત ઓ, હું માને છે. ઓહ, આ getString, તે કરશે કારણ કે દરેક [માં ઇનપુટ કરી? વિસ્તાર. ?] ડેવિડ જે MALAN: સારી. ચોક્કસ. પણ આ અસરકારક રીતે છતાં એક એરે, યાદ આપે છે, અમે શબ્દમાળા પાછા મળી છે, અમે કરી શકો છો 01 અને 2 નો ઉપયોગ કે જેઓ શબ્દમાળા માં ઇન્ડેક્સ. પારિભાષિક રીતે, આ કદાચ છે વ્યક્તિગત સરનામાં દ્વારા રજૂ, પરંતુ તે દંડ છે. તેથી, ધારવું જો હું માત્ર ઝડપી કરી શકો છો અમે બોલ બાકી જ્યાં આગળ છેલ્લા સમય, એક તો શબ્દમાળાઓ, એક બોલ્ડ ઈ ત હતી બેકસ્લેશ 0, ત્યાં રજૂ ગાબે માતાનો ઇનપુટ, અમે કેવી રીતે હવે પ્રતિનિધિત્વ શકે? આ છે કે મેમરી છે getString દ્વારા પરત કરવામાં આવી? Janelle: તે હશે એક ચાપ દ્વારા રજૂ? ડેવિડ જે MALAN: એક ચાપ દ્વારા? ના, સારું. , ચાલો માત્ર pictorially, કહો મને માત્ર આગળ જવા દો આ ઓ છે, તો, આ છે કે પ્રસ્તાવ getString પરત કિંમત છે. અને તમે 0, 1, 2, તરીકે આ દોરવામાં કર્યું છે, જે સંપૂર્ણપણે વાજબી છે કારણ કે અમે જેમ કે શબ્દમાળા માં અનુક્રમણિકા, કરી શકો છો. પરંતુ માત્ર સાથે સુસંગત હોઈ છેલ્લા સમય, મને આગળ જાઓ અને આપખુદ આ કે પ્રસ્તાવ સરનામું 1 છે, આ સરનામા 2 છે, આ તેથી આગળ સરનામું 3, અને છે. અને તેથી, માત્ર સુપર હોઈ સ્પષ્ટ, શું ચાલી રહ્યું છે કે પરિણામે s માં જાઓ કોડ પ્રથમ વાક્ય, તમે કહે છે? Janelle: સરનામું 1? ડેવિડ જે MALAN: ચોક્કસ. તેથી 0x1 સંબોધવા. અને દરમિયાન, મને આગળ જાઓ અને તમે કંઇ કર્યું છે તે ખૂબ ડુપ્લિકેટ અને અહીં મારા પોતાના ટી ઉમેરો. હું ગાબે લખો હતા ફરી, બીજી વાર, GetString સાથે જ્યારે પૂછવામાં આવે ત્યારે, જ્યાં, અલબત્ત, ગાબે જવા માટે ચાલે છે? વેલ, presumably-- Janelle: અહીં માંગો છો? ડેવિડ જે MALAN: અરે વાહ. Janelle: અથવા તે જ બોક્સ માં પણ છે? ડેવિડ જે MALAN: મને હા, પ્રસ્તાવ દો બરાબર, આ વધારાના બોક્સ માં છે. પરંતુ હવે કી છે પણ, કે જે હું આ ખૂબ નજીક દોરવામાં કર્યું છે છતાં together-- 0x1, આ વાસ્તવમાં 0x2-- છે, હવે, સરનામું 0x10 હોઈ શકે દાખલા તરીકે, અને 0x11, અને 0x12, અને તેથી આગળ. અને તેથી, જો કે આ કેસ છે, શું ટી અહીં અંત રહ્યું છે? Janelle: 0x10? ડેવિડ જે MALAN: ચોક્કસ. તેથી 0x10. અને તેથી હવે, અંતિમ પ્રશ્ન. તમે અત્યાર સુધી, આ કામ કરવા માટે આવી હોય આમ અત્યાર સુધી એક હાથી માટે ખૂબ સખત. હવે દ્વારા, હું કોડ ખેંચી જો ફરીથી, હું જ્યારે, લાઇન ત્રણ, ઓ બરાબર ટી બરાબર છે, હું ખરેખર શું છું અમે અહીં દોરવામાં કર્યું સરખામણી છે? Janelle: આ બે સરનામાં? ડેવિડ જે MALAN: ચોક્કસ. તેથી હું ટી માટે સમાન સમાન છે છે કહી રહ્યો છું? અન્ય શબ્દોમાં, 10 બરાબર સમાન 1 છે? અને અલબત્ત, આ સ્પષ્ટ જવાબ હવે ના, છે. અને તેથી આ કાર્યક્રમ આખરે છે તમે કહે છે શું, છાપી રહ્યા? Janelle: તે હશે તમે આ જ વાત લખ્યો? ડેવિડ જે MALAN: તેથી જો ઓ 1 છે અને ટી 10 છે? Janelle: તમે અલગ વસ્તુઓ લખ્યો. ડેવિડ જે MALAN: ચોક્કસ. તમે અલગ વસ્તુઓ લખ્યો. અધિકાર છે. તેથી વધાવી એક રાઉન્ડ, અહીં, અમે કરી શકે છે. [વધાવી] તે પીડાદાયક હતી. મને ખબર છે. સરસ રીતે થાય છે. તેથી હવે આપણે જોઈ જો અમે કરી શકો છો આ સુધારો શું સિવાય પીંજવું. અને અલબત્ત, અમે this-- સુધારાઈ જ્યારે જે હું હવે green-- માં પ્રતિનિધિત્વ પડશે અમે અહીં ઉન્નત્તિકરણો એક દંપતિ હતી. પ્રથમ, માત્ર એક સેનીટી તરીકે હું પ્રથમ ચકાસણી છું, તપાસ ઓ નલ સમકક્ષ હોય છે અને ટી નલ સમકક્ષ હોય છે. અને માત્ર સ્પષ્ટ કરવા માટે, જ્યારે કદાચ ઓ અથવા ટી આ જેમ કોડ નલ હોઈ? જ્યારે ઓ અથવા ટી નલ હોઈ શકે છે. અરે વાહ? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: ચોક્કસ. શબ્દમાળા વપરાશકર્તા કે તો માં ટાઇપ રીતે ખૂબ લાંબુ છે મેમરી માં ફિટ, અથવા અમુક માટે કે વિચિત્ર ખૂણે કેસ, અમે જોશો શાબ્દિક, GetString આજે, તેના દસ્તા, તે નલ આપશે કહે ખાસ સંત્રી કિંમત છે, અથવા માત્ર પ્રકારની ખાસ પ્રતીક કે કંઈક ખોટું થયું છે. તેથી અમે માટે ચેક કરવા માંગો છો તે તારણ, કારણ કે તે કે નલ ખૂબ જ ખતરનાક કિંમત છે. ઘણી વખત, તમે સાથે કંઈક પ્રયાસ કરો નલ પસાર એક કાર્ય સંડોવતા ઇનપુટ, કે કાર્ય instance-- માટે ખૂબ જ તેની સાથે, ભાંગી અને શકે છે, તમારા આખા કાર્યક્રમ નીચે લે છે. તેથી આ ત્રીજી લાઇન હવે માત્ર એક સેનીટી છે જો તમે કરશે, ભૂલ ચકાસણી તપાસો. તે માટે હવે એક સારા આદત છે અમને કોઇ સમય માં વિચાર અમે નીચેની ઉપયોગ કરવાનો પ્રયાસ કરો કે સંભવિત, નલ હોઈ શકે છે. હવે, અહીં ચોથા લીટી માં, "જો strcmp (ઓ, ટી)," સાથે સાથે, શું ઉલ્લેખ છે? ઠીક છે, અમે આ ખૂબ જ સંક્ષિપ્તમાં એક હતું શબ્દમાળા સરખામણી માટે નામ આપવામાં આવ્યું કાર્ય. અને જીવનમાં તેની હેતુ સરખાવવા માટે છે બીજા તે સામે તેના પ્રથમ દલીલ, પરંતુ તેમના સરનામાં દ્રષ્ટિએ, અમે એક ક્ષણ અજાણતા હતી પહેલાં લાલ કોડ સાથે છે, પરંતુ તેના બદલે તે બે સરખામણી આ માણસાઈભરી સાહજિક માં શબ્દમાળાઓ આ સામે, આ સરખામણી કરીને રીતે, આ, આ સામે, અને સામે પછી બંધ જ્યારે એક તો અથવા મારી આંગળીઓ બંને એક બેકસ્લેશ 0 બનાવ્યા. તેથી કોઈને વર્ષ પહેલાં અમલમાં strcmp કાર્યક્ષમતા માટે અમલ કરવા માટે અમે મેળવેલ હશે આશા છે કે માત્ર બે સરળ કિંમતો સરખામણી કરીને. હવે પ્રમાણિકપણે, હું ચિત્ર રાખવા આ વિવિધ નંબરો છે. પરંતુ વાસ્તવિકતા હું કરી છે, છે સમગ્ર સમય આ બનાવે. અને તેથી મને માત્ર આગળ જવા દો અને આ બહાર બેદરકારીપૂર્વક એક બિંદુ બનાવવા માટે, કે જે ઓવરને અંતે દિવસ અને આગળ વધવા, અમે ખરેખર કાળજી નથી જઈ રહ્યાં છો શું વસ્તુઓ ખરેખર છે સંબોધે મેમરીમાં. તેથી હું આ ડ્રો નથી જઈ રહ્યો છું ખૂબ જ હવે નંબરો પ્રકારના, હું દૂર એક આ માત્ર એક અમૂર્ત છું માત્ર તીર સાથે વધુ મૈત્રીપૂર્ણ ઓછી. અન્ય શબ્દોમાં, ઓ એક નિર્દેશક છે, સાથે સાથે,, ચાલો માત્ર શાબ્દિક, તે ડ્રો દો એક નિર્દેશક છે, એક તીર પોઇન્ટ , બીજું કંઈક કરવા માટે જાતે અને લગભગ પણ વધુ ચિંતા કરશો આ સરનામાં ની ક્ષુદ્ર બાબત જે, ફરી, હું કોઈપણ રીતે બનેલી. પરંતુ અમે તે સરનામાં જોશો, ક્યારેક કોડ ડિબગીંગ છે. હવે દરમિયાન, આ કાર્યક્રમ અહીં સુધારાઓ, અલબત્ત, સરખામણી કરીને કે સમસ્યા તે બે શબ્દમાળાઓ. પરંતુ અમે અન્ય સમસ્યા ચાલી હતી. આ નકલ હતો , છેલ્લા સમય કાર્યક્રમ જેમાં, હું ઉઠાવે પ્રયાસ કરી રહી છે શબ્દમાળા માત્ર પ્રથમ અક્ષર. પરંતુ લક્ષણ શું હતું અમે જ્યારે છેલ્લા સમય જોવા મળી હતી વપરાશકર્તા જેમ, નીચેની લખ્યો લોઅરકેસ માં ગાબે, ઓ માટે, પછી અમે ટી માં ઓ સોંપાયેલ ત્યાં ત્રીજા વાક્ય છે, અને પછી હું પ્રયત્ન કર્યો છે ટી કૌંસ 0 ઉઠાવે? અસર શું હતું ટી કૌંસ 0 અહીં બદલવા? પ્રેક્ષક: તે ઓ બદલી. ડેવિડ જે MALAN: અરે વાહ, હું તેમજ, ઓ બદલી. ખરેખર શું થવાનું હતું કારણ કે? ઠીક છે, હું સાફ કરી શકો છો તો મને જોવા દો આ ચિત્ર ઉપર, તરીકે અનુસરે છે. ઓ છે, ફરીથી, આ શબ્દ જી, એ, બી, ઈ, બેકસ્લેશ, 0, અને ઓ અમે એક બોક્સ તરીકે ચિત્ર ચાલુ રાખીશું અહીં છે, પરંતુ કોઈ વધુ સરનામાઓ. માતાનો વસ્તુઓ બનાવે બંધ કરીએ. આપણે માત્ર એક ચિત્ર દોરવા દો વિશ્વમાં સરળ બનાવવા માટે. હું શબ્દમાળા ટી સાથે ટી જાહેર છે, કે મેમરી કે ભાગ બનાવે છે. સ્ક્વેર 32 બને છે સૌથી કમ્પ્યુટર્સ બીટ્સ. હકીકતમાં, જો તમે ક્યારેય સાંભળ્યું કર્યું છે કોમ્પ્યુટર, 32-bit આર્કિટેક્ચર કર્યા ખરેખર ફેન્સી-વાત, કે જે હમણાં જ તે 32-bit સરનામા વાપરે છે. અને કોરે ટેકનિકલ છે, તમે ક્યારેય આશ્ચર્ય છે જો શા માટે જૂની કમ્પ્યુટર્સ, ખરેખર તમે જો રેમ ઘણાં બધાં સાથે સૂપ તેમને પ્રયાસ કર્યો હતો, માત્ર મહત્તમ કરી શકે છે RAM ની ચાર ગીગાબાઇટ્સ છે, સારી રીતે કે શાબ્દિક, કારણ કે છે, તમારા જૂના કમ્પ્યુટર કરી શકે માત્ર 4 જેટલા ઊંચા ગણતરી અબજ, 4 અબજ બાઇટ્સ, તે છે, કારણ કે 32-bit ઉપયોગ કરવામાં આવ્યો હતો સરનામાંઓ માટે નંબરો. પરંતુ કોઈ પણ સંજોગોમાં, આ ઉદાહરણ તરીકે, વાર્તા ખૂબ જ સરળ. ટી માત્ર અન્ય નિર્દેશક છે, અથવા ખરેખર એક કોલસો બનાવો સ્ટાર ઉર્ફે શબ્દમાળા. અને હું કેવી રીતે આ ચિત્ર અપડેટ કરવા માંગો છો હવે કોડ કે બીજા વાક્ય સાથે, ડોટ પછી, કોઈ, કોઈ? હું જ્યારે શબ્દમાળા ટી, ઓ અર્ધવિરામ બરાબર આ ચિત્ર કેવી રીતે બદલી છે? અરે વાહ? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: અરે વાહ. ચોક્કસ. હું માત્ર એક તીર મૂકી એ જ સરનામા પર ટી બોક્સ, એ જ પ્રથમ અક્ષર આપી હતી. અથવા ટેકનિકલી, તો આ વ્યક્તિ, 0x1 પર હજુ પણ હતા હું હતો છતાં તે છે અહીં 0x1 અને અહીં 0x1. પરંતુ ફરીથી, જે ધ્યાન આપતા સરનામાંઓ વિશે શું? તે હવે બાબતો કે માત્ર વિચાર છે. તેથી આ અહીં શું થઈ રહ્યું છે તે છે. અલબત્ત, જો તમે કરો, તો ટી કૌંસ તેથી એરે સંકેત છે, જે 0, ના કોર્સ અને પ્રમાણિકપણે, તે જુએ છે અહીં એક એરે છે, જેમ કે પરંતુ હવે આ વિચિત્ર વસ્તુ છે. કે પ્રોગ્રામિંગ ભાષા જાણો, સી, તો તમે આ લક્ષણ આપે છે જેમાં, ટી એક હોય તો પણ નિર્દેશક, અથવા ઓ એક નિર્દેશક છે, તમે હજુ પણ છે કે પરિચિત ઉપયોગ કરી શકો છો આરામદાયક ચોરસ કૌંસ સંકેત પ્રથમ તત્વ પર જવા માટે, બીજા તત્વ, અથવા કોઈપણ તત્વ કે કે નિર્દેશક પોઇન્ટ છે કે માટે કદાચ, કારણ કે, તે આ કિસ્સામાં, છે કેટલાક એરે નિર્દેશ કરતી. કેવી રીતે અમે આ ઠીક છે? તે મળી જ્યાં પ્રમાણિકપણે, આ છે પ્રથમ નજરમાં થોડી જબરજસ્ત. પરંતુ અહીં એક નવા અને સુધારેલ આવૃત્તિ છે. તેથી પ્રથમ, હું મેળવવામાં છું CS50 પુસ્તકાલય છુટકારો, માત્ર ખરેખર કે ઓ છે છતી ચાર રચે સ્ટાર, માત્ર એક પર્યાય. અને ટી પણ ચાર રચે સ્ટાર છે. પરંતુ પર શું ચાલી રહ્યું છે તે લીટી ની બાજુ જમણી બાજુ ટી નીચેની સોંપેલ છે? Malloc શું છે? તે શું strlen છે? Sizeof (કોલસો) શું છે? શા માટે હેક કરે રેખા દેખાવ જેથી જટિલ? શું તે ઊંચા સ્તરે કરી રહ્યો છે? શું તે ટી માં સંગ્રહિત છે? અરે વાહ? પ્રેક્ષક: તે ફાળવણી છે એક મેમરી જગ્યા ચોક્કસ રકમ. તે સંગ્રહવા માટે છે હું ધારી, અક્ષરો [અશ્રાવ્ય]. ડેવિડ જે MALAN: યોગ્ય છે. યોગ્ય છે. તે ચોક્કસ ફાળવણી છે મેમરી જગ્યા રકમ , કદાચ, ભાવિ અક્ષરો સંગ્રહ છે. અને ખાસ કરીને, malloc તેથી શું પરત આવે છે? પ્રેક્ષક: [અશ્રાવ્ય] પરત? ડેવિડ જે MALAN: ચોક્કસ. કે મેમરી ની સરનામું પરત, જે કહેતા ફેન્સી માર્ગ છે, આ ના સરનામા આપે છે કે મેમરી પ્રથમ બાઇટ. મને યાદ પર જવાબદારી છે કેટલી મેમરી હું ખરેખર ફાળવવામાં અથવા malloc કહ્યું હતું. હવે કેટલી છે? વેલ, ત્યાં છે, તેમ છતાં અહીં કૌંસ ઘણો, malloc માત્ર એક જ દલીલ છે. અને હું ઓ strlen સ્પષ્ટ, તેથી આપે છું મને ઘણા બાઇટ્સ s માં ત્યાં છે, પરંતુ એક ઉમેરો. શા માટે? અરે વાહ? પ્રેક્ષક: આ બેકસ્લેશ 0. ડેવિડ જે MALAN: ચોક્કસ. અમે થોડી housekeeping કરવા મળી છે. એક બેકસ્લેશ છે કારણ કે તેથી 0, અમે વધુ સારી રીતે યાદ રાખો કે છો. અન્યથા, અમે જઈ રહ્યાં છો શબ્દમાળા બનાવવા માટે કે કે ખાસ ટર્મીનેટર નથી. દરમિયાન, માત્ર સુપર હોઈ ગુદા, હું sizeof (કોલસો) છે માત્ર કેસ કોઈને મારા ચાલે છે નથી આ CS50 ઉપકરણ પર કોડ, પરંતુ કદાચ એક અલગ કમ્પ્યુટર એકસાથે જ્યાં અક્ષરો સંમેલન દ્વારા, એક બાઈટ છે, પરંતુ બે બાઇટ્સ, અથવા તે કરતાં મોટી કંઈક. તે માત્ર સુપર હોઈ છે, ભૂલો માટે સુપર પ્રતિકૂળ. તેમ છતાં, વાસ્તવમાં, તે છે મોટા ભાગે એક 1 પ્રયત્ન રહ્યું. હવે દરમિયાન, હું આગળ જાઓ અને નકલ આ શબ્દમાળા ટી કૌંસ હું ટી કૌંસ ઓ સમકક્ષ હોય છે. અને હું છેલ્લા અઠવાડિયે માતાનો માટે અલગ પાડવા કરશે સ્ત્રોત કોડ થઈ રહ્યું છે તે જોવા માટે. કી takeaway, અને પણ કારણ હું લીલા હવે કોડ મૂકી , તે ખૂબ જ છેલ્લા વાક્ય કારણ છે ટી કૌંસ 0, toupper બરાબર અસર છે Capitalizing જે શબ્દમાળા? ટી અને / અથવા ઓ? કોડ કે છેલ્લા વાક્ય. શું છે કારણ કે, ફક્ત ટી આ સમય થયું હું સહેજ કે છેલ્લા પગલું પૂર્વવત્ જો, હું malloc કૉલ જ્યારે તે, છે થયું છે હું અનિવાર્યપણે મેમરી એક ભાગ વિચાર કે મૂળ જેવા જ માપ છે, કે અંકગણિત છે કારણ કે હું હતી. હું સરનામું ટી માં સ્ટોર છું મેમરી કે ભાગ છે. પણ આ સરસ લાગે છે છતાં અને, ખૂબ સરસ અને ખાલી, વાસ્તવિકતા શું અમે પડશે, ત્યાં છે અહીં, ફોન કચરો કિંમતો રાખો. મેમરી કે ભાગ કદાચ ખૂબ જ સાથે સાથે તે પહેલાં કરવામાં આવે છે, થોડીવાર, થોડી મિનિટો પહેલાં. તેથી સંપૂર્ણપણે નંબરો હોઇ શકે છે માત્ર અકસ્માત દ્વારા ત્યાં અથવા અક્ષરો. પરંતુ તેઓ મને ત્યાં સુધી માન્ય નથી મારી મેમરી આ ભાગ રચના વાસ્તવિક અક્ષરો સાથે, હું ત્યાં લૂપ માટે કે શું. બધા હક? તેથી હવે, ના અંત આ ત્રણ ઉદાહરણો કે મોટે ભાગે, છેલ્લા સમય ભાંગી હતી આ સ્વેપ ઉદાહરણ, આ કાર્ય અર્થમાં કામ કર્યું તે a અને b સ્વૅપ છે. પરંતુ તે શું અન્ય અર્થમાં કામ ન હતી? અરે વાહ? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: ચોક્કસ. હું આ કાર્ય કૉલ હતા દાખલા તરીકે another-- થી, , જ્યાં મુખ્ય જેમ કાર્ય થી હું તરીકે, ચલ, એક્સ અને વાય છે છેલ્લા અઠવાડિયે હતી, જ કોડ છે, અને હું એક્સ અને વાય પાસ સ્વેપ અને પછી Swap-- આ કૉલ, અલબત્ત, યોગ્ય આવૃત્તિ છે અમે કરી રહ્યાં છો શું છે see-- તે કામ ન હતી. તેથી સુધારો શું છે? ઠીક છે, તેથી માત્ર હોઈ સ્પષ્ટ, મને આગળ જાઓ and-- બીજા અહીં મને એક આપે છે, અને જુઓ હું તમને છેલ્લા એક, બતાવી શકો છો કે જે જો હું શોધી શકો છો માતાનો જોવા દો in-- હશે આ વાસ્તવિક fast-- બરાબર, [અશ્રાવ્ય]. ઠીક છે, ત્યાં તે છે. તેથી હું માત્ર લખીને છું આદેશો અવગણો. હું તેને પ્રાપ્ત કરવા માંગો છો છેલ્લા મિનિટ એક ઉદાહરણ છેલ્લા સમય છે, જે હવે કોઈ સ્વેપ કહેવામાં આવે છે. તેથી કોઈ સ્વેપ જ્યાં છે અમે છેલ્લા સમય બોલ બાકી જેમાં, હું આરંભ 1 માટે એક્સ અને 2 વાય. હું પછી 1 અને 2 માં પસાર, સ્વેપ ફોન કરો. અને પછી આ કાર્ય અમુક અર્થમાં માં કામ કર્યું હતું, પરંતુ તે કોઈ કાયમી હતી એક્સ અને વાય પર અસર. તેથી હાથ પર પ્રશ્ન કેવી રીતે હવે છે અમે ખરેખર આ સમસ્યા ઠીક કરું? હાથ પર ઉકેલ શું છે? ઠીક છે, આજે નવા છે swap.c, માં, તફાવત એક દંપતી નોટિસ. એક્સ અને વાય જ છે. પરંતુ શું સ્પષ્ટ છે 25 લીટી વિશે અલગ? તમે યાદ તો શું, ત્યાં નવા છે તે બીજી પહેલા જેવા દેખાતા શું? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: અરે વાહ. તેથી ampersands નવી ભાગ છે વાક્યરચના માત્ર આ કાર્યક્રમ માં, પણ વધુ સામાન્ય રીતે CS50 માં. તારીખ કરવા માટે, હું નથી લાગતું નથી અમે કોઈ ઉદાહરણો જોઇ છે અથવા ખરેખર કોઈપણ તેમને વિશે વાત કરી કદાચ, preemptively કરતાં અન્ય વિગત, વિભાગમાં, આ જેવા 'ચિન્હ. ઠીક છે, તે 'ચિન્હ છે બહાર વળે નવી વાક્યરચના ના છેલ્લા ટુકડાઓ અમે જાણવા રહ્યા છીએ. તે અર્થ એ થાય બધા છે કેટલાક ચલ સરનામું. શું સરનામું ખાતે એક્સ રહે છે? પરંતુ વાય શું સરનામું રહે છે? કારણ કે જો પહેલાં મૂળભૂત સમસ્યા કે એક્સ અને વાય પસાર કરવામાં આવી હતી આવી હતી અમે ખરેખર શું કરવા માંગો છો નકલો છે, એક ખજાનો જેવા સાથે સ્વેપ પૂરી પાડે છે જ્યાં એક્સ અને વાય ખરેખર તરફ દોરી જાય છે નકશો કે જેથી, રેમ છે સ્વેપ કે નકશો અનુસરી શકે છે એક્સ અથવા વાય હાજર ચિહ્નિત કરે છે ત્યાં અને પર જાઓ અને વાસ્તવિક કિંમતો બદલવા 1 અને 2 ત્યાં. તેથી સ્વેપ પણ સહેજ બદલવા માટે જરૂર છે. અને પ્રથમ નજરમાં, આ શક્તિ ચાર સ્ટાર માટે થોડી જ લાગે છે. અને ખરેખર તે છે. તેથી માહિતી કયા પ્રકારનું માટે નિર્દેશક છે, આ પ્રકાશિત ભાગ પર આધારિત છે? તેથી તે પૂર્ણાંક છે. તેથી લાંબા સમય સુધી પૂર્ણાંક છે, તે પૂર્ણાંક ની સરનામા છે. અને એ જ રીતે, બી હવે રહ્યું છે પૂર્ણાંક ની સરનામા છે. તેથી હવે હું મુખ્ય થી સ્વેપ કહી છે, હું સ્વેપ 1 અને 2 આપી રહ્યું નથી. હું એવું આપવા જઈ રહ્યો છું બળદની કંઈક અને બળદ કંઈક, દોરી જશે કે બે સરનામાં તેમના વાસ્તવિક સ્થાનો પર સ્વેપ મારા કમ્પ્યુટર મેમરી. તેથી હવે, મારા બાકીના અમલીકરણ તદ્ બદલવા માટે જરૂર છે. શું હવે દેખીતી રીતે અલગ છે કોડ આ ત્રણ રેખાઓ? આ બધા ખરેખર ખૂબ જ તારાઓ છે સ્થળ પર, બધા અધિકાર? તેથી શું અહીં ચાલી રહ્યું છે? અરે વાહ? પ્રેક્ષક: તે [અશ્રાવ્ય] દેખીતી રીતે છે. ડેવિડ જે MALAN: ચોક્કસ. આ સંદર્ભમાં તેથી અને આ ન હતી શ્રેષ્ઠ ડિઝાઈન નિર્ણય, બેશક, વર્ષ પહેલાં. આ સંદર્ભમાં, જ્યાં માં તમે માત્ર એક સ્ટાર છે, અને તમે એક માહિતી પ્રકાર નથી, પૂર્ણાંક જેમ, તરત જ ડાબી, તેને બદલે તમે સ્પષ્ટ રીતે, એક સમાન સાઇન હોય છે, આ સંદર્ભમાં, તમે કહે છે ત્યારે એક તારો, કે પર જાઓ અર્થ એ થાય એક છે કે સરનામું. તેથી વાત કરવા માટે, ખજાનો નકશો અનુસરો. અને વચ્ચે, 37 લીટી માં, તે જ વસ્તુ છે. આ સરનામું, પર જાઓ, અને શું ત્યાં મૂકી? ગમે તે પર છે બી સ્પષ્ટ કરે તે સ્થાન. અન્ય શબ્દોમાં, b પર જાઓ. તે કિંમત મેળવો. સમાન દીઠ, એક પર જાઓ અને સાઇન ઇન કરો, સોંપણી ઓપરેટર, ત્યાં તે કિંમત મૂકો. એ જ રીતે, પૂર્ણાંક કામચલાઉ નોકર માત્ર પૂર્ણાંક છે. કંઈ કામચલાઉ નોકર વિશે બદલવા માટે જરૂર છે. તે Annenberg માંથી માત્ર એક ખાલી કાચ છે કેટલાક દૂધ અથવા નારંગી રસ માટે. પરંતુ હું કહે છે, બી પર જવા માટે જરૂર છે. કે સ્થળ પર જાઓ અને ત્યાં કામચલાઉ નોકર માં કિંમત મૂકો. તેથી પછી શું ચાલી રહ્યું છે? હું ખરેખર, આ સમય સ્વેપ કૉલ કરો ત્યારે આ પ્રથમ ટ્રે અહીં, મુખ્ય પ્રતિનિધિત્વ આ બીજા ટ્રે સ્વેપ રજૂ કરે છે, જ્યારે હું 'ચિન્હ એક્સ અને' ચિન્હ વાય પસાર મુખ્ય સ્વેપ થી, માત્ર સ્પષ્ટ કરવા આ સ્ટેક ફ્રેમ પ્રાપ્ત છે? અરે વાહ? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: ચોક્કસ. X ની સરનામું અને વાય ના સરનામું. અને તમે આ વિચાર કરી શકો છો પોસ્ટલ સરનામાં ગમે છે. 33 ઓક્સફર્ડ સ્ટ્રીટ અને 35 ઓક્સફર્ડ સ્ટ્રીટ, અને તમે બે ઇમારતો ખસેડવા માંગો છો તે સ્થળોએ છે. તે હાસ્યાસ્પદ વિચાર જેવું છે, પરંતુ તે અમે સરનામા દ્વારા અર્થ બધા છે. જ્યાં વિશ્વમાં કરી શકો છો તમે તે બે ints શોધવા? જ્યાં વિશ્વમાં તમે કરી શકો છો તે બે ઇમારતો શોધી? તેથી છેવટે તો આ બધા સમય બાદ આજે સ્રોત કોડ જાય અને સંકલન સ્વેપ અને રન ./swap, અંતે, માટે પ્રથમ વખત અમે ખરેખર જુઓ કે નથી મારા કિંમતો ખરેખર છે સફળતાપૂર્વક સ્વૅપ કરવામાં આવી. અને હવે, અમે પણ લઈ શકે છે આ કહે છે, GDB નોંધ. તેથી મને તે જ ફાઈલમાં જાઓ. મને આગળ વધો અને ./swap ના GDB ચલાવો. અને હવે, સ્વેપ, હું જાઓ જાઉં છું આગળ અને મુખ્ય માં વિરામ બિંદુ સુયોજિત કરો. અને હવે હું જાઓ જાઉં છું આગળ અને કાર્યક્રમ ચલાવો. અને હવે અમે મારી કોડ જુઓ તે લીટી પર રોક્યો છે. હું આગળ અને પ્રિન્ટ જાઓ એક્સ, હું અહીં શું જોવું જોઈએ? તે એક પ્રશ્ન છે. ફરીથી કહો? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: તેથી રેન્ડમ નંબર, કદાચ. કદાચ હું નસીબદાર વિચાર છે, અને તે છે 0 જેમ, સરસ અને સરળ. પરંતુ કદાચ તે કેટલાક રેન્ડમ નંબર છે. આ કિસ્સામાં, હું નસીબદાર મળી. તે માત્ર 0 બને છે. પરંતુ તે ખરેખર નસીબ છે નથી ત્યાં સુધી કારણ કે હું આગામી લખો અને પછી પ્રિન્ટ એક્સ કે છે કોડ ઓફ લાઇન, 19 લીટી ચલાવવામાં આવી. દરમિયાન, હું લખો તો આગામી ફરી, અને હવે હું 2 જોવા માટે જાઉં છું, વાય છાપે. હું આગામી લખો હવે, જો, તે બનશે થોડો ગૂંચવણમાં મૂકે વિચાર, હવે કારણ કે, આ printf પર દેખાય રહ્યું છે સ્ક્રીન હતી, છે. એક્સ 1 છે. માતાનો આ ફરીથી દો. અને હવે, અહીં જ્યાં છે વસ્તુઓ રસપ્રદ છે. હું સ્વેપ અથવા તો પગલું કૉલ પહેલાં તેને, ચાલો થોડું પિક લેવા દો. એક્સ, ફરી, 1 છે. વાય, અલબત્ત, ઝડપી સેનીટી છે જેથી હાર્ડ નથી ત્યાં, 2 તપાસો. પરંતુ 'ચિન્હ એક્સ શું છે? જવાબ છે, તે પ્રકારની ફંકી જોઈ છે. પરંતુ કૌંસ માં પૂર્ણાંક સ્ટાર માત્ર છે આ કહેતા જીડીપી માર્ગ એક સરનામું છે. તે, તે માટે નિર્દેશક પૂર્ણાંક છે નથી પૂર્ણાંક, અથવા તો એક સરનામું તરીકે ઓળખાય છે. આ ક્રેઝી વસ્તુ શું છે? અમે કંઈક ક્યારેય જોઇ ​​છે તદ્દન પહેલાં કે. તેથી આ મારા કમ્પ્યુટર માં સરનામું એક્સ રહેવા માટે થાય છે યાદમાં. તે બળદની-કંઈક છે. અને આ પ્રમાણિકપણે, શા માટે છે, હું તીર ચિત્રકામ શરૂ કર્યું છે, બદલે નંબરો, જે ખરેખર ધ્યાન આપતા કારણ કે તમારા પૂર્ણાંક ચોક્કસ છે કે મોટા કે છે કે સરનામું. પરંતુ bffff0c4, આ બધા છે ખરેખર હેક્સાડેસિમલ અંકો, એફ દ્વારા 0 છે. તેથી અમે પણ રહેવું નથી જઈ રહ્યાં છો તે વસ્તુઓ છે તેના પર લાંબા. પરંતુ હું વાય છાપી છે, અલબત્ત, હું 2 જુઓ. પરંતુ 'ચિન્હ વાય, હું આ સરનામા જુઓ. અને નોટિસ, આ વિચિત્ર માટે, સિવાય એક્સ અને વાય અત્યાર સુધી કેવી રીતે છે? તમે સરનામું સૌથી અવગણી શકો છો. ચાર બાઇટ્સ. અને તે સાથે સુસંગત છે અમારા અગાઉ પૂર્ણાંક કેવી રીતે મોટા દાવો છે કે? ચાર બાઇટ્સ. તેથી તે બધું અસ્તર અપ જેવી લાગે છે સરસ રીતે, તમે મેમરી, આશા શકે છે. તેથી હવે, માત્ર ઝડપી આગળ ચાલો આ વાર્તા ઓવરને. , ચાલો આગળ વધો અને પગલું લખો આ સ્વેપ કાર્ય માં ડાઇવ. હવે હું લખો, તે છે, નોટિસ x ની સરનામું સમાન. હું બી લખો, તો તે સમાન છે વાય ના સરનામા માટે. તેથી હું જો તે જોવા જોઈએ , એક આ સરનામા પર જાઓ કહે છે? તેથી એક સ્ટાર છાપો. તેથી સ્ટાર આ સંદર્ભમાં, અર્થ ત્યાં જાઓ. 'નું ચિહ્ન ના સરનામા શું થાય છે. તેથી એક સાધન 1 સ્ટાર. અને પ્રિન્ટ સ્ટાર બી મને 2 આપે છે. અને મને આ ક્ષણ માટે, ધારે દો, ઓછામાં ઓછા કોડ કે જે બની શકે છે હવે ચલાવવા માટે આગળ તે રીતે મારફતે કારણ. પરંતુ અમે લાંબા પહેલાં આ વિચાર ફોટાઓની પડશે. સ્વેપ તેથી આ આવૃત્તિ હવે સાચું છે અને પરવાનગી આપે છે અમને આ ચોક્કસ માહિતી પ્રકાર સ્વેપ. તેથી કોઇ પ્રશ્નો પછી સ્વેપ પર? સ્ટાર પર? સરનામું પર? અને તમે સાથે જોશો સમસ્યા પ્રકારના, 4 સેટ પરંતુ સમસ્યા 5, ચોક્કસપણે, કેવી રીતે આ સેટ વસ્તુઓ ઉપયોગી છે અને વિચાર વધુ પરિણામે, તેમની સાથે આરામદાયક. બધા કંઈપણ? અધિકાર છે. તેથી malloc, આ કાર્ય ફરી, છે કે જે હમણાં જ મેમરી, મેમરી ફાળવે ફાળવણી. અને શા માટે આ ઉપયોગી છે? વેલ, આ બધા સમય, તમે malloc ઉપયોગ કરી રહ્યો છું. તમે હવે કેવી રીતે ગણે છે કામ GetString, કદાચ, તે છે એક ભાગ માટે કોઈને પૂછ્યા કરવામાં મેમરી, ગમે ત્યારે વપરાશકર્તા પ્રકારો શબ્દમાળા માં, ચોક્કસપણે અમે કારણ કે ખબર ન હતી, CS50 સ્ટાફ છે, કેવી રીતે મોટા તે શબ્દમાળાઓ કે માનવીઓ હોઈ શકે લખો જવું છે. તેથી આપણે, પ્રથમ વખત માટે શરૂ કરો છાલ પાછા કેવી રીતે CS50 પુસ્તકાલય કામ કરે છે, ઉદાહરણો એક દંપતિ માર્ગ દ્વારા કે ત્યાં અમને દોરી જશે. હું gedit ખોલો તેથી જો અને, scanf 0 ખોલો અમે નીચેની કોડ જોઈ રહ્યા છીએ. માટે વેબસાઇટ પર ઉપલબ્ધ Scanf 0, આજે કોડ પ્રમાણમાં થોડા લીટીઓ છે અહીં, 20 મારફતે 14. અને આપણે તેના કરી રહ્યો છે તે જોવા દો. તે પૂર્ણાંક કહેવાય એક્સ જાહેર. તે કંઈક જેમ, નંબર કરો કહે છે. અને હવે તે scanf% હું અને એક્સ, કહે છે. તેથી ત્યાં નવી સામગ્રી સમૂહ છે. પરંતુ scanf, તમે પ્રકારની વિચાર કરી શકો છો ના printf વિરુદ્ધની છે. printf, અલબત્ત, સ્ક્રીન પર પ્રિન્ટ. વપરાશકર્તાની માંથી સ્કેન ની scanf પ્રકારની કીબોર્ડ કંઈક તે અથવા તેણી લખ્યો છે. % હું માત્ર printf જેવી છે. આ અપેક્ષા અર્થ એ થાય વપરાશકર્તા પૂર્ણાંક લખો. અને હવે, તમે શા માટે મને લાગે છે નથી scanf અને એક્સ પસાર કરી શકે છે? જો scanf ના જીવન માં હેતુ વપરાશકર્તા માંથી કંઈક વિચાર છે, અર્થ શું છે હવે, તે પસાર, અને એક્સ? અરે વાહ? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: ચોક્કસ. ગમે હું, માનવ, મારા ઇનપુટ લખો તે સ્થાન પર સેવ કરી રહ્યું છે. તે માત્ર છે, યાદ, પૂરતી નથી અમે પહેલેથી જ જોઇ છે, કારણ કે એક્સ પાસ, કોઈપણ સમયે તમે માત્ર એક કાચા ચલ પસાર પૂર્ણાંક, જેમ કે કેટલાક અન્ય કાર્ય કરવા માટે, ખાતરી કરો કે, તે બદલી શકો છો ચલ, પરંતુ કાયમ માટે. તે મુખ્ય પર અસર હોઈ શકે નહિં. તે માત્ર ત્યારે જ તેની પોતાની સ્થાનિક નકલ બદલી શકો છો. પરંતુ જો, તેની બદલે, તમે નથી મને વાસ્તવિક પૂર્ણાંક આપે છે, પરંતુ તમે મને દિશાઓ આપે છે કે પૂર્ણાંક, હું હવે, scanf છે ચોક્કસ, હું કે અનુસરી શકે છે સંબોધવા માટે અને ત્યાં એક નંબર મૂકી તેથી તમે પણ તે વપરાશ હોય છે. હું આ કાર્યક્રમ ચલાવવા તેથી, જ્યારે માતાનો જોવા દો. Scanf 0 કોઈ સ્લેશ કરો, 0 scanf. અને હવે હું એક નંબર લખો, તો 50, જેમ કે 50 માટે આભાર. હવે હું જેવી નંબર લખો, તો નકારાત્મક 1 માટે, 1 નકારાત્મક. હું હવે એચએમ, 1.5 જેવા નંબર લખો. શા માટે મારા કાર્યક્રમ મને અવગણો હતી? ઠીક છે, કારણ કે સરળ, હું જણાવ્યું તે પૂર્ણાંક માત્ર અપેક્ષા છે. અધિકાર છે. જેથી આ એક આવૃત્તિ છે. ચાલો એક ઉત્તમ અપ વસ્તુઓ લે છે અને આ સારી નથી કે પ્રસ્તાવ. અને અહીં એક ખૂબ જ સરળ ઉદાહરણ આવેલું અમે લેખન કોડ શરૂ કરી શકો છો કેવી રીતે અન્ય લોકો બગાડી શકે છે અથવા ખરાબ વસ્તુઓ કરવાથી સમાધાન. તેથી 16 લીટી, તેથી જ ભાવના પહેલાં માટે, પણ હું તેને આ સમય પૂર્ણાંક જાહેર છું. હું શબ્દમાળા ઉર્ફ, તે ચાર સ્ટાર જાહેર છું. પરંતુ તે ખરેખર શું અર્થ છે? તેથી હું એક સરનામાં સ્પષ્ટ ન હોય તો અને હું આપખુદ તે ફોન કરું છું, બફર, પણ હું simple-- છે, તે ઓ કહી શકે છે અને પછી હું આ કરવા મને સમજાવવા, તમે પહેલાંની પર આધારિત છે, કરી શકે છે જો તર્કશાસ્ત્ર, scanf 18 લીટી માં કરી છે તે, પાસ% અને બફર જો, એક સરનામું કે જે છે? તમે લાગુ પડે છે scanf, શું છે આવૃત્તિ 0 તરીકે ચોક્કસ જ તર્ક, અહીં કરવા માટે પ્રયત્ન રહ્યું છે, જ્યારે માં વપરાશકર્તા પ્રકારો કંઈક? અરે વાહ? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: ચોક્કસ. Scanf, તર્ક અગાઉ દ્વારા, શબ્દમાળા લાગી રહ્યું છે માનવ લખેલા કે , તે હવે એક શબ્દમાળા છે in-- તે, કદાચ, એક નંબર નથી તે અથવા તેણી cooperates-- જો અને તે મૂકવા પ્રયાસ ચાલી રહ્યું છે ગમે સરનામા પર મેમરીમાં શબ્દમાળા બફર સ્પષ્ટ કરે છે. અને આ મહાન છે, કારણ કે બફર ખરેખર એક સરનામું થઈ ગયું છે. પરંતુ હું આ કાર્યક્રમ માં બગડેલ છે દાવો ખૂબ જ ગંભીર રીતે, કિંમત શું છે કારણ કે મૂળભૂત રીતે બફર? હું શું માં આરંભ છે? મેમરી શું ભાગ? હું નથી, અધિકાર? તેથી હું ફાળવવામાં કર્યું છે, તેમ છતાં એક લાંબા સમય સુધી ઓ કહેવાય છે કે ચાર સ્ટાર, તે બદલે કહેવાય છે, તેથી buffer-- માતાનો ચલ નામ ડ્રો દો હું નથી તો હવે buffer-- અહીં GetString અથવા malloc કહેવાય છે, કે અસરકારક રીતે અર્થ એ થાય કે બફર માત્ર કેટલાક કચરો કિંમત છે. હવે તે શું અર્થ છે? હું scanf કહ્યું છે કે જે થાય છે વપરાશકર્તા માંથી શબ્દમાળા અપેક્ષા છે. અને તમે શું જાણો છો? ગમે આ વસ્તુ પોઇન્ટ છે to-- અને હું પ્રશ્ન ચિહ્ન ડ્રો, પરંતુ વાસ્તવમાં, તે જ હશે Ox1, 2, 3, કંઈક અધિકાર? કેટલાક બનાવટી કિંમત છે કે જે હમણાં જ પહેલાં ત્યાં બને છે. તેથી બીજી રીતે મૂકો, તે છે બફર માત્ર છે છતાં મેમરી કંઈક પોઇન્ટ. હું કોઈ વિચાર શું છે. હવે હું ગાબે લખો તેથી જો, તે રહ્યું છે ત્યાં ત અ બાય ઈ / 0 મૂકવા પ્રયાસ કરો. પરંતુ જે છે તે જાણે છે? અને ભૂતકાળમાં, કોઈપણ અમે સ્પર્શ કરવાનો પ્રયત્ન કર્યો છે સમય અનુલક્ષતું નથી કે મેમરી અમને શું થયું છે? અથવા લગભગ દરેક સમય. વિભાગીય દોષ, અધિકાર? તે છે જ્યાં આ તીર, હું કોઈ વિચાર હોય છે પોઇન્ટ. તે માત્ર કેટલાક રેન્ડમ કિંમત છે. અને અલબત્ત, તમે અર્થઘટન જો એક સરનામું તરીકે રેન્ડમ કિંમત, તમે પર જાઓ રહ્યા છીએ કેટલાક રેન્ડમ સ્થળ. તેથી ગાબે ક્રેશ ખરેખર કદાચ અહીં આ કિસ્સામાં મારા કાર્યક્રમ. તેથી અમે તે લગભગ ખરાબ છે શું કરી શકો છો? આ ત્રીજા ધ્યાનમાં અને scanf અંતિમ ઉદાહરણ. આ આવૃત્તિ કયા અર્થમાં વધુ સારી છે? તમે સાથે આરામદાયક છે, તો અગાઉના સમસ્યા, આ સારું છે. શા માટે? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: સારી. રેખા 16 તેથી આ કિસ્સામાં આ અર્થમાં, વધુ સારી છે અમે સ્પષ્ટપણે છો અમુક મેમરી ફાળવણી. અમે malloc ઉપયોગ કરી રહ્યાં છો અમે સપ્તાહ 2 ઉપયોગ કરી રહ્યાં છો માત્ર એક એરે જાહેર ના અભિગમ. અને અમે તે શબ્દમાળા પહેલાં જણાવ્યું હતું કે કર્યું માત્ર અક્ષરો ઝાકઝમાળ છે, તેથી આ તદ્દન કાયદેસર છે. પરંતુ તે છે, અલબત્ત, છે તમે 16,, નિયત માપ નોંધ કરો. તેથી આ કાર્યક્રમ છે તદ્દન સલામત, હું લખો તો એક અક્ષર શબ્દમાળાઓ માં, બે અક્ષર શબ્દમાળાઓ, 15 અક્ષર શબ્દમાળાઓ. પરંતુ જલદી હું 16 લખીને શરૂ કરવા માટે, 17, 18, 1000 અક્ષર શબ્દમાળાઓ, જ્યાં કે જેઓ શબ્દમાળા અંત રહ્યું છે? તે અંશતઃ અહીં અંત બનશે. પરંતુ તે પછી જે તે બીજું જાણે સરહદો બહાર છે આ ચોક્કસ ઍરેની? હું કર્યું છતાં તે અહીં 16 બોક્સ જાહેર કર્યો. તેથી એ બધા 16 બહાર ડ્રો બદલે, અમે પડશે માત્ર હું 16 દોરવામાં કર્યું છે ડોળ. પરંતુ હું પછી શબ્દમાળા વાંચવાનો પ્રયત્ન કરો તો કે 50 અક્ષરો, જેમ કે ખૂબ લાંબા સમય સુધી છે, હું મૂકવા શરૂ જાઉં છું એ, બી, સી, ડી, એક્સ, વાય, Z. અને આ કદાચ છે કેટલાક અન્ય મેમરી સેગમેન્ટ કે, ફરી, થઇ શકે છે મારા કાર્યક્રમ, ભાંગી હું માટે પૂછવામાં ન કર્યું કારણ કે માત્ર 16 બાઇટ્સ કરતાં વધુ કંઇ. તેથી જેઓ ધ્યાન આપતા? ઠીક છે, અહીં આ CS50 પુસ્તકાલય છે. અને આ મોટા ભાગના માત્ર છે ઉપર સૂચનો છે. આ CS50 પુસ્તકાલય, આ બધા સમય, રેખા 52 માં આ વાક્ય ધરાવે છે. અમે typedef જોવા મળે છે, અથવા છે તમે typedef જોશો માત્ર એક બનાવે છે, જે 4 pset માં સમાનાર્થી ચાર સ્ટાર વધુ હોઈ શકે છે જેમાં ખાલી શબ્દમાળા તરીકે ઓળખવામાં આવે છે. તેથી આ એક છે થોડા તાલીમ વ્હીલ્સ અમે હૂડ નીચે ગુપ્ત ઉપયોગ કર્યા. દરમિયાન, અહીં GetChar, કાર્ય છે. હવે દેખીતી રીતે, તે આ બોલ પર કોઈ શરીર છે. અને હકીકતમાં, હું રાખવા જો સરકાવનાર, હું ખરેખર નથી કોઈપણ અમલીકરણો જુઓ આ વિધેયો. એક સેનીટી ચેક તરીકે, કે શા માટે છે? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: અરે વાહ. તેથી આ હેડર ફાઇલ છે. અને હેડર ફાઈલો પ્રોટોટાઇપ છે, વત્તા કેટલાક અન્ય સામગ્રી, તે લાગે છે typedefs ગમે છે. પરંતુ cs50.c, અમે કર્યું જે સંપૂર્ણ તમે ક્યારેય આપવામાં, પરંતુ CS50 સાધન રહ્યું છે બધા આ જ સમયે, ઊંડા તેના ફોલ્ડર્સ અંદર, સમગ્ર છે નોંધ્યું છે કે અહીં વિધેયો સમૂહ. હકીકતમાં, ચાલો સરકાવો દો. હવે માટે, તેમને મોટા ભાગના અવગણો દો. પરંતુ getInt સુધી સરકાવો અને GetInt કેવી રીતે કામ કરે છે. અહીં getInt છે. તમે ક્યારેય ખરેખર સંભાળ તો કેવી રીતે મેળવશો પૂર્ણાંક અહીં કામ કરે છે, તેના દસ્તાવેજ છે. અને વસ્તુઓ વચ્ચે તે તમને કહે છે કિંમતો રેન્જ તે પરત કરી શકે છે તે. તે આવશ્યકપણે નકારાત્મક છે 2 અબજ હકારાત્મક 2 અબજ, આપે અથવા લે છે. અને તે આ બધા તારણ સમય, અમે ક્યારેય કર્યું છે, તેમ છતાં તમે તે માટે તપાસ કરી હતી, કંઈક ખોટું થાય તો, તે બધા તારણ છે કે આ જ સમયે, getInt છે ખાસ પરત કરવામાં આવી , નલ, સતત નથી પરંતુ, કે જે INT_MAX માત્ર એક પ્રોગ્રામર માતાનો સંમેલન. તે અહીં અર્થ એક ખાસ કિંમત છે. માત્ર, આ માટે ચકાસવા માટે ખાતરી કરો કિસ્સામાં કંઈક ખોટું. પરંતુ અમે હેરાનગતિ ક્યારેય કર્યું તારીખ સાથે, ફરીથી, આ કારણ કે સરળ બનાવવા માટે જ છે. પરંતુ કેવી રીતે getInt અમલ કરવા કરે છે? વેલ, એક, તે કોઈ દલીલો લે છે. અમે તે જાણો છો. તે પૂર્ણાંક આપે છે. અમે તે જાણો છો. તેથી તે કેવી રીતે હૂડ નીચે કામ કરે છે? તેથી દેખીતી રીતે અનંત છે લૂપ, એક ઓછામાં ઓછા દેખાવ. અમે GetString ઉપયોગ કરી રહ્યાં છો કે નોટિસ. જેથી રસપ્રદ છે. getInt આપણા પોતાના કાર્ય, getString કહે છે. અને હવે શા માટે આ કેસ હોઈ શકે છે? શા માટે હું રક્ષણાત્મક હોવા છું અહીં લાઇન 165 માં? શું વાક્ય બની શકે છે 164, માત્ર સ્પષ્ટ કરવા? તે પહેલાની જેમ જ જવાબ છે. માત્ર મેમરી સમાપ્ત થઈ શકે છે. કંઈક, GetString સાથે ખોટું અમે તે નિયંત્રિત કરવા માટે સમર્થ થવા માટે મળી છે. અને કારણ હું નલ છે પાછા નથી કે, તકનીકી, નલ નિર્દેશક છે. getInt પૂર્ણાંક પાછા છે. તેથી હું આપખુદ કર્યું , અનિવાર્યપણે, નક્કી કર્યું 2 અબજ છે, ચાલે છે, આપે છે અથવા લો ખાસ કિંમત હોઈ કે હું ક્યારેય કરી શકો છો ખરેખર વપરાશકર્તા માંથી મળે છે. હું જાઉં છું માત્ર એક કિંમત છે ભૂલ કોડ પ્રતિનિધિત્વ કચરો. તેથી હવે, વસ્તુઓ થોડી ફેન્સી વિચાર. અને તે ખૂબ જ કાર્ય નથી પહેલાની જેમ, પણ તે ખૂબ જ સમાન છે. તેથી હું લીટી માં, અહીં જાહેર નોટિસ 172, પૂર્ણાંક n એ અને ચાર રચે સી બંને. અને પછી હું આ ફંકી લીટી વાપરો તે તારણ કે જે sscanf, કીબોર્ડ માંથી શબ્દમાળા સ્કેન નથી. તે હાલના શબ્દમાળા રહે છે વપરાશકર્તા પહેલાથી જ માં લખ્યો છે. તેથી હું પહેલેથી જ getString, કહેવાય જે હું મેમરીમાં શબ્દમાળા હોય છે. sscanf શું તમે છો છે એક પદચ્છેદન કાર્ય ફોન કરો. હું કર્યું શબ્દમાળા જુએ , અક્ષર દ્વારા, અક્ષર લખ્યો અને ઉપયોગી કંઈક કરે છે. તે શબ્દમાળા લાઇન માં સંગ્રહાય છે. અને હું માત્ર દ્વારા જઈને ખબર છે કે ઠીક છે, ઓહ, અહીં અને કહ્યું બેકઅપ, હું નથી આ સમય છે, પરંતુ રેખા કહેવાય છે. અને હવે આ થોડી અલગ છે. પરંતુ આ અસરકારક રીતે કારણોસર, એનો અર્થ એ થાય અમે કંઈક, આજે અમારા હાથ વેવ પડશે અમે ચકાસણી કરવામાં આવે છે વપરાશકર્તા માં ટાઇપ તે જોવા અને પૂર્ણાંક અને કદાચ અન્ય પાત્ર. વપરાશકર્તા પૂર્ણાંક માં લખ્યો છે, તે છે હું છું કારણ કે જવાનું, એ સંગ્રહિત કરી સરનામું આ પસાર આજે આપણે જોઇ છે નવા યુક્તિ. વપરાશકર્તા પણ લખ્યો તો જેમ 123x, તે એક્સ એક અંત રહ્યું છે અક્ષર સી અક્ષર. હવે તે sscanf તારણ આપે છે intelligently, મને કહેશે, કેટલા ચલો sscanf હતી ભરવા માટે સફળતાપૂર્વક સક્ષમ. આ તર્ક દ્વારા, તેથી જો કાર્ય હું getInt છે અમલીકરણ છું પણ હું ચકાસણી છું, સંભવિત, વપરાશકર્તા માટે પૂર્ણાંક માં લખ્યો છે કંઈક બીજું દ્વારા અનુસરવામાં, શું હું sscanf માતાનો માંગો છો પરત કિંમત સાચી હોઈ? હેતુ વિચાર છે માત્ર વપરાશકર્તા માંથી પૂર્ણાંક? તેથી sscanf વળતર જો 2, કે શું અર્થ છે? વપરાશકર્તા માં ટાઇપ કંઈક જેમ, શાબ્દિક, માત્ર નોનસેન્સ છે 123x,. તે ભૂલ શરત છે, અને હું તે માટે ચેક કરવા માંગો છો. તેથી આ માં વપરાશકર્તા પ્રકારો જો, દ્વારા આ તર્ક, પાછા sscanf શું કરે છે, તમે કહે છે? તેથી તે છે, કારણ કે 2 પરત ચાલી રહ્યું છે આ 123, અહીં જાઓ રહ્યું છે અને એક્સ અહીં અંત રહ્યું છે. પરંતુ હું એક્સ ભરવામાં કરો નહિં માંગો. હું માત્ર સફળ sscanf કરવા માંગો છો તેના ચલો પ્રથમ ભરવા. અને તેથી કે શા માટે છે હું sscanf 1 પરત કરવા માંગો છો. અને આ માથા ઉપર થોડી છે આ ક્ષણ માટે, તે તદ્દન દંડ છે. , છતાં તે એક ખ્યાલ getInt અને GetString કિંમતો અમે એક એક હેક કરી રહ્યા છીએ છે આ રીતે ચકાસણી ભૂલ ઘણો કે, તારીખ કરવા માટે, તમે ખૂબ ખૂબ કરી શકો છો તમારા કીબોર્ડ પર કંઈપણ લખો અને અમે તેને પકડી કરશે. અને અમે ચોક્કસપણે, આ સ્ટાફ નથી, ચોક્કસપણે કરશે એક ભૂલ સ્ત્રોત હોઈ તમારા કાર્યક્રમ, અમે સંરક્ષક છો કારણ કે આ મૂર્ખ બધા ​​માટે ચકાસણી વપરાશકર્તા કરી શકે છે વસ્તુઓ છે કે જે, , જ્યારે શબ્દમાળા લખીને જેવા તમે ખરેખર પૂર્ણાંક માગતા હતા. તેથી અમે આવો પડશે હવે માટે પાછા આ લાંબા પહેલાં પરંતુ આ બધા સમય, GetString અને GetInt છે આ ઉપયોગ હૂડ નીચે કરવામાં આવી મેમરી સરનામાંઓ મૂળભૂત વિચાર. તેથી હવે, એક માતાનો વસ્તુઓ બનાવવા દો વપરાશકર્તા મૈત્રીપૂર્ણ થોડી વધુ. તમે Binky છેલ્લા છે, યાદ શકે છે સમય મારા માઉસ જેથી cooperate-- કરશે અમે આ કોડ છે, હતી જે પ્રમાણિકપણે, એકદમ વાહિયાત છે. આ કોડ કંઈ હાંસલ ઉપયોગી છે, પરંતુ તે ઉદાહરણ હતું કે પ્રોફેસર Parlante પ્રતિનિધિત્વ કરવા માટે ઉપયોગ થાય છે શું ચાલી રહ્યું હતું મેમરી સંડોવતા કાર્યક્રમ. તેથી આપણે આ retell દો વાર્તા સુપર થોડા સમય. આ પ્રથમ બે લીટીઓ માં ઇંગલિશ, તમે શું, કહે છે નથી? જસ્ટ વ્યાજબી માનવ, પરંતુ સહેજ પારિભાષિક શબ્દો, ઘણો પ્રયાસ લે છે. AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: ઠીક છે, તમે સ્થાપિત કરી રહ્યા છીએ તમારા એક્સ અને વાય ચલો માટે સરનામાઓ. નથી તદ્દન, એક્સ અને વાય નથી કારણ કે પરંપરાગત અર્થમાં ચલો. એક્સ અને વાય સરનામાં છે અથવા સરનામું સ્ટોર કરશે. તેથી આપણે આ વધુ એક વખત પ્રયાસ કરો. નથી ખરાબ શરૂઆત, જોકે. અરે વાહ? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: સારી. હું થોડો ક્લીનર લાગે. બે પોઇન્ટર, બે પૂર્ણાંકો જાહેર. અને અમે તેમને એક્સ અને વાય કૉલ કરી રહ્યાં છો. અથવા આપણે તો ડ્રો આ એક ચિત્ર છે, ફરી, તદ્દન સરળ છે કે જે બધા યાદ અમે તે પ્રથમ વાક્ય સાથે કરી રહ્યા છીએ આ જેવી બોક્સ ચિત્રકામ છે, તે કેટલાક કચરો કિંમત સાથે, અને પછી તે એક્સ ફોન, અને આ જેમ અન્ય બોક્સ, કેટલાક કચરો કિંમત સાથે તે, વાય તે કહે છે. અમે બે જાહેર કર્યું છે પોઇન્ટર કે આખરે પૂર્ણાંક ની સરનામા સ્ટોર કરશે. જેથી બધા છે. Binky આ ​​હતી તેથી, જ્યારે માટી માત્ર આ જેવો દેખાતો હતો. અને નિક માત્ર પ્રકારની આ તીર આવરિત, છતાં તેઓ ગમે ત્યાં પોઇન્ટ નથી ખાસ કરીને, કારણ કે તેઓ માત્ર છો કચરો કિંમતો. તેઓ બાહ્ય રીતે આરંભ કરી રહ્યા છીએ ગમે ત્યાં ખાસ કરીને. હવે આગળના વાક્ય કોડ છે, સ્મૃતિ, આ હતી. , વ્યાજબી વપરાશકર્તા મૈત્રીપૂર્ણ તેથી પરંતુ કંઈક અંશે ટેકનિકલ ઇંગલિશ, કોડ કરી આ વાક્ય શું છે? અરે વાહ? AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: યોગ્ય છે. તે ના ભાગ allocating છે પૂર્ણાંક માપ છે કે મેમરી. અને તે અડધા જવાબ નથી. તમે જમણી જવાબ આપ્યો અભિવ્યક્તિ અડધા. શું પર થઈ રહ્યું છે આ સમાન સાઇન ડાબી બાજુ? અરે વાહ? પ્રેક્ષક: અને સોંપે તે ચલ x માટે? ડેવિડ જે MALAN: અને સોંપે તે ચલ x છે. રીકેપ, બાજુ જમણી બાજુ ફાળવે તેથી પૂરતી મેમરી પૂર્ણાંક સંગ્રહવા માટે. પરંતુ malloc ખાસ સરનામા આપે તમે કર્યું, જે મેમરી કે ભાગ છે, માત્ર એક્સ માં સંગ્રહિત નહીં પ્રસ્તાવ મૂક્યો. તેથી શું નિક Binky સાથે છેલ્લા સમય હતી છે તેમણે તે નિર્દેશક બહાર ખેંચી, માટી, મેમરી એક સફેદ ભાગ પર હવે નિર્દેશ કે પૂર્ણાંક માપ સમાન છે. અને ખરેખર, કે અર્થ થાય છે ચાર બાઇટ્સ પ્રતિનિધિત્વ. કોડ ઓફ હવે, આગામી વાક્ય આ હતી, સ્ટાર એક્સ 42 નોંધાયો નહીં. તેથી 42 પર સીધું છે બાજુ જમણી બાજુ, જીવન અર્થ. ડાબી બાજુ, સ્ટાર એક્સ શું અર્થ થાય છે? કે ઠીક છે gone-- કે પણ હોય શકે છે. બરાબર. પ્રેક્ષક: સામાન્ય રીતે, [અશ્રાવ્ય] પર જાઓ ડેવિડ જે MALAN: સારી. AUDIENCE: [અશ્રાવ્ય]. ડેવિડ જે MALAN: ચોક્કસ. ડાબી બાજુ એક્સ પર જાઓ છે. એક્સ સરનામું છે. તે 33 ઓક્સફર્ડ સ્ટ્રીટ, અથવા Ox1 જેવું છે. અને સ્ટાર એક્સ કે પર જાઓ અર્થ એ થાય સંબોધવા માટે અને શું ત્યાં મૂકી? 42. તેથી ખરેખર, કે નિક હતી બરાબર છે. તેમણે દ્વારા સાથે પ્રારંભ અનિવાર્યપણે, માનસિક આંગળી નિર્દેશ કરતી એક્સ, તીર નીચેના જમણી બાજુ સફેદ બોક્સ બાજુ, અને ત્યાં સંખ્યા 42 મૂકવા. પરંતુ પછી વસ્તુઓ મળી એક ઓછી ખતરનાક, અધિકાર? Binky માતાનો તેના માથા ગુમાવી વિશે. સ્ટાર વાય શું અર્થ થાય છે, 13, ખરાબ નસીબ બરાબર? તેથી સ્ટાર વાય અર્થ વાય માં સરનામા પર જાઓ. પરંતુ વાય માં સરનામા શું છે? બધા હક છે, તે કચરો કિંમત અધિકાર છે? હું એક પ્રશ્ન ચિહ્ન તરીકે હતી. નિક એક અપ વળાંકવાળા તીર તરીકે હતી. અને જલદી તમે પ્રયત્ન કરો, કારણ કે ત્યાં જવા કહ્યું, સ્ટાર વાય છે, પરંતુ કાયદેસર નથી સરનામું, તે કેટલાક બનાવટી સ્થાન છે, કાર્યક્રમ ભાંગી બનશે. અને Binky વડા રહ્યું છે તે કર્યું છે, અહીં બંધ ઉડાન. અંતે, આ કાર્યક્રમ તેથી માત્ર ફ્લેટ બહાર પ્રવાહ હતો. તે બગડેલ કાર્યક્રમ હતો. અને તે ઠીક કરવાની જરૂર છે. અને માત્ર એક જ રસ્તો છે, ખરેખર, તે સુધારવા માટે હશે, દાખલા તરીકે, આ વાક્ય, અમે પણ કરવા નથી, જે કારણ કે કાર્યક્રમ ખૂબ જલ્દી ક્રેશ થયું. પરંતુ અમે આ ઠીક હતા, શું અસર વાય સમાન એક્સ છે કરી છે? ઠીક છે, તે અનિવાર્યપણે પર વાય નિર્દેશ ગમે કિંમત એક્સ નિર્દેશ કરતી હોય છે. નિક વાર્તા તેથી, અથવા Binky વાર્તા, બંને એક્સ અને વાય નિર્દેશ કરતી હતી મેમરી સફેદ ભાગ, જેથી, છેવટે, જ્યારે તમે વાય ફરીથી 13 બરાબર સ્ટાર નથી, તમે 13 મૂકવા અંત યોગ્ય સ્થાન. તેથી આ રેખાઓ તમામ સંપૂર્ણપણે છે કાયદેસર, આ એક સિવાય તે તમે પહેલાં થયું ત્યારે ખરેખર વાય કેટલાક કિંમત આઈડી. હવે Thankfully, તમે નથી તમામ મારફતે કારણ છે તમારા પોતાના પર મુદ્દાઓ આ પ્રકારના. મને આગળ વધો અને ખોલો અહીં એક ટર્મિનલ વિન્ડોમાં અને માત્ર એક ક્ષણ માટે, ખોલો, એક સુપર ટૂંકા કાર્યક્રમ કે પણ પ્રકારના અર્થહીન છે. તે નીચ છે. તે ઉપયોગી કંઈપણ હાંસલ નથી. પરંતુ તે મુદ્દાઓ નિદર્શન કરે છે મેમરી છે, તેથી આપણે એક નજર. મુખ્ય, સુપર સરળ. તે દેખીતી રીતે એક કાર્ય કહે છે, એફ, અને પછી 0 આપે છે. તે વાસણ આ પ્રકારની મુશ્કેલ છે. તેથી મુખ્ય અત્યાર સુધી, ખૂબ સારી છે. તેથી એફ સમસ્યારૂપ છે. અને માત્ર ખૂબ આવ્યો ન હતો તે નામકરણ માં પ્રયાસ અહીં, આ કોડ પર ધ્યાન રાખો. એફ બે લીટીઓ છે. અને હવે શું થઈ રહ્યું છે તે જોવા દો. તેથી એક તરફ અહીં અને મને બનાવવા દો અગાઉના સાથે આ સુસંગત એક તરફ ઉદાહરણ, ડાબી બાજુ છે ઇંગલિશ માં, શું કરી? તે ઠીક છે પ્રેક્ષક: નિર્દેશક બનાવી રહ્યા છે. ડેવિડ જે MALAN: નિર્દેશક બનાવી પૂર્ણાંક અને ફોન તે એક્સ. તેથી તે તે બોક્સ એક બનાવી છે હું ટચ સ્ક્રીન પર ચિત્રકામ રાખવા. અને હવે, જમણી બાજુ બાજુ, malloc, અલબત્ત, મેમરી એક ભાગ allocating છે. અને માત્ર સ્પષ્ટ કરવા માટે, કેવી રીતે બધી મેમરીનો દેખીતી રીતે તે છે ફાળવણી, તમે જો માત્ર પ્રકારની અહીં ગણિત છે? તેથી તે 40 બાઇટ્સ છે. અને મને ખબર છે કે હું એક ખબર માત્ર કારણ કે પૂર્ણાંક, CS50 સાધન પર, ઓછામાં ઓછા, ચાર બાઇટ્સ છે. તેથી 10 વખત 4 40 છે. તેથી આ એક એક્સ સ્ટોર કરે છે, સરનામાં 40 ints પ્રથમ બહાર કે પાછા જગ્યા ફાળવવામાં કરવામાં આવી છે, પાછળ, પાછળ, પાછળ. અને તે malloc વિશે કી શું છે. તે થોડો મેમરી નથી અહીં, એક અહીં થોડી, થોડી અહીં. તે તમને મેમરી એક ભાગ આપે છે નજીકના, ઓપરેટિંગ થી સિસ્ટમ. હવે આ વિશે શું, એક્સ કૌંસ 10 0 સમકક્ષ હોય છે? કોડ ઓફ આર્બિટરિ વાક્ય. તે ઉપયોગી કંઈપણ હાંસલ નથી. પરંતુ તે રસપ્રદ છે એક્સ કૌંસ 10-- કારણ કે? અરે વાહ? AUDIENCE: [અશ્રાવ્ય]? ડેવિડ જે MALAN: એક્સ કૌંસ 10 નલ હોય છે નથી. આ નલ વિગતવાર માત્ર નાટક આવે શબ્દમાળાઓ સાથે, શબ્દમાળા ઓવરને અંતે. પરંતુ એક સારો વિચાર. કેવી રીતે મોટા પણ, આ એરે છે હું 40 બાઇટ્સ ફાળવવામાં કર્યું છે છતાં? તે હક, નવ મારફતે 0 છે? તે કુલ, 10 ints છે. 40 બાઇટ્સ, પરંતુ 10 ints, 0 મારફતે 0 અનુક્રમિત. જેથી એક્સ કૌંસ 10 શું છે? તે ખરેખર છે કેટલાક અજ્ઞાત કચરો કિંમત. તે મારા માટે સંબંધ નથી મેમરી છે. હું સ્પર્શ ન કરવો જોઇએ બાઇટ નંબર 41, 42, 43, 44. હું ખૂબ દૂર સહેજ જાઉં છું. અને ખરેખર, હું ચલાવી રહ્યા હોય તો આ કાર્યક્રમ, તે ખૂબ જ સારી રીતે ભાંગી શકે છે. પરંતુ ક્યારેક, અમે નસીબદાર મળશે. અને તેથી માત્ર નિદર્શન this-- અને પ્રમાણિકપણે, જો તમે પહેલાં ક્યારેય ખબર તેને આ ચલાવો નથી. તે ખરેખર ભાંગી ન હતી. પરંતુ હું માટે આ ફેરફાર જો ઉદાહરણ, 1000 જેવા હોઈ ખરેખર આ કરવા માટે ઇરાદાપૂર્વકની, માતાનો જોવા દો અમે વિચાર કરી શકો છો તે આ સમય ભાંગી. ઠીક છે, તે તૂટી ન હતી. કેવી રીતે 100,000 વિશે શું? ચાલો તે રિમેક છે, અને હવે તે પુનઃ ચલાવો. બરાબર. Phew. અધિકાર છે. તેથી દેખીતી રીતે, ફરી, આ મેમરી સેગમેન્ટો, તેથી વાત કરવા માટે જેથી અમે કરી શકો છો, વ્યાજબી મોટી છે ફરીથી અને ફરીથી નસીબદાર વિચાર. પરંતુ છેવટે, એક વખત તમે હાસ્યાસ્પદ વિચાર અને ખરેખર, સ્ક્રીન પર અત્યાર સુધી બહાર જાઓ તમે, કે જે ખરેખર મેમરી સ્પર્શ ખરેખર તમે સંબંધ નથી. પરંતુ પ્રમાણિકપણે, આ ભૂલો પ્રકારના જવું છે કઠણ અને કઠણ હોય છે તમારા પોતાના પર બહાર આકૃતિ. પરંતુ thankfully, પ્રોગ્રામરો, અમે છે અમને અમારા માટે આ કરવા માટે પરવાનગી આપે છે સાધનો. તેથી આ કદાચ, એક છે આ ugliest કાર્યક્રમો, GDB આઉટપુટ કરતાં પણ uglier. પરંતુ તે હંમેશા એક લાઇન છે કે સુપર ઉપયોગી છે કે બે. Valgrind મદદ કરે છે એક કાર્યક્રમ છે તમે એક કાર્યક્રમ ડિબગ નથી, સે દીઠ, પરંતુ મેમરી સંબંધિત શોધવા સમસ્યાઓ, ખાસ. તે આપમેળે તમારા કોડ ચાલશે તમે અને ઓછામાં ઓછા બે વસ્તુઓ માટે જુઓ. એક, તમે કંઈક કરી ટચ મેમરી જેવા આકસ્મિક કે તમે સંબંધ ન હતી? તે તમને તે કિસ્સાઓમાં શોધવા મદદ કરશે. અને બે, તે મદદ કરશે તમે કહેવાય કંઈક શોધવા મેમરી લીક્સ, અમે હોય છે જે સંપૂર્ણપણે અવગણવામાં, નિખાલસ રીતે, કેટલાક સમય માટે અને પરમ સુખથી. પરંતુ તે તમામ, બહાર વળે આ જ સમયે, જ્યારે તમે GetString કહેવાય છે અમારા કાર્યક્રમો ઘણા, તમે ઓપરેટિંગ કહીએ છીએ મેમરી માટે સિસ્ટમ, પરંતુ તમે કોઇ સ્મરણ છે ક્યારેય તે આપ્યા પાછા, કરી unalloc, અથવા મફત, તે કહે છે, કારણ કે. ના, કારણ કે અમે ક્યારેય કર્યું આમ કરવા માટે તમને પૂછવામાં. પરંતુ આ બધા સમય, કાર્યક્રમો તમે સી લખી રહ્યો છું મેમરી લીક કરવામાં આવી છે, ઓપરેટિંગ પૂછવા વધુ અને વધુ માટે સિસ્ટમ શબ્દમાળાઓ અને whatnot માટે મેમરી, પરંતુ તે પાછા સોંપવામાં નથી. અને હવે આ એક બીટ છે એક વધુ પડતી સાદગીની છે, પરંતુ તમે ક્યારેય કર્યું હોય તો તમારા મેક ચલાવવા અથવા અમુક સમય, ઉદઘાટન માટે તમારા PC કાર્યક્રમો ઘણાં, કદાચ, કાર્યક્રમો બંધ અને છતાં પણ તમારા કમ્પ્યુટર ક્રેશ થયું છે, તે ખૂબ જ ધીમી મેળવવામાં આવ્યું તે ખરેખર છે છતાં મેમરીની જરુર મદદથી અથવા સાધનો, છતાં પણ, તમે ન હો તો પણ કીબોર્ડ સ્પર્શ, કે હોઈ પરંતુ always-- શકે શકે આ કાર્યક્રમો તમે ચલાવી રહ્યા છો કે હોઈ પોતાને મેમરી લીક્સ હોય છે. અને તેઓ વધુ અને માટે ઓએસ પૂછવા રાખવા વધુ મેમરી છે, પરંતુ તે વિશે ભૂલી, ખરેખર, તેનો ઉપયોગ નથી પરંતુ તેથી દૂર મેમરી લેવા તેને કરવા માંગો છો શકે છે અન્ય કાર્યક્રમો. જેથી એક સામાન્ય સમજૂતી છે. હવે અહીં જ્યાં Valgrind માતાનો છે આઉટપુટ સંપૂર્ણપણે છે તે ઓછી માટે ભયાનક અને જેવું વધુ આરામદાયક. પરંતુ રસપ્રદ સામગ્રી અહીં અધિકાર છે. તે મને એક અમાન્ય લખવા કહેવાની છે કદ ચાર, આ કાર્યક્રમ માં થાય છે ખાસ કરીને, memory.c ઓફ 21 વાક્ય પર. હું એચએમ, ત્યાં ખરેખર, 21 વાક્ય પર જાઓ કદ ચાર એક અમાન્ય લખવા છે. શા કદ ચાર? વેલ, આ નંબર અને તે કંઈ હોઈ શકે પૂર્ણાંક છે. તેથી તે ચાર બાઇટ્સ છે. તેથી હું ચાર બાઇટ્સ મૂકી રહ્યો છું જ્યાં તેઓ અનુસરતા નહિં હોય. કે શું Valgrind છે ખરેખર મને કહી છે. વધુમાં, તે પણ કરશે અમે જોશો, મને કહો, જો તમે આ ભવિષ્યના pset માં ચલાવો, કારણ કે તો તમે જે ખરેખર મેમરી, લીક કર્યું જ્યારે હું કહેવાય છે, કારણ કે હું હોય છે malloc છે, પણ હું ખરેખર નથી મફત, આ કિસ્સામાં, કહેવાય છે, જે અમે આખરે જોશો malloc ના વિરોધી છે. તેથી હવે, હું એક અંતિમ ઉદાહરણ છે. તેથી આ એક થોડી વધુ છે arcane છે, પરંતુ તે કદાચ છે માટે સૌથી મોટી કારણ , મેમરી સાથે ખૂબ કાળજી રાખો અને કારણ કે ઘણા કાર્યક્રમો અને તે પણ આ દિવસ માટે / અથવા વેબ સર્વરો, ક્યાંક ખરાબ ગાય્ઝ દ્વારા લેવામાં આવે છે ઇન્ટરનેટ પર કોઈક જે છે તમારા સર્વર માટે બનાવટી પેકેટો મોકલીને તમારા એકાઉન્ટ્સ સમાધાન કરવાનો પ્રયાસ કરી, અથવા તમારા ડેટા લે છે, અથવા માત્ર સામાન્ય રીતે મશીન પર લે છે. બફર ઓવરફ્લો, તરીકે નામ, અર્થ સૂચવે છે નથી પૂર્ણાંક છે, પરંતુ એક બફર વહેતું. અને એક બફર માત્ર એક ફેન્સી માર્ગ છે કહેતા તે મેમરી એક ટોળું છે. અને ખરેખર, હું એક શબ્દમાળા કહેવાય બદલે ઓ બફર, પહેલાં. તે બફર જો કારણ કે, આ યુ ટ્યુબ અર્થમાં જેમ, અથવા તમે એક વિડિઓ જોઈ રહ્યાં છો કોઈપણ સમયે, તમે આ શબ્દ બફરીંગને જોઈ હોય શકે છે, ડોટ, કોઈ ડોટ. તે માનવામાં ન આવે એવી નકામી છે. અને તે માત્ર અર્થ એ થાય તમારા વિડિઓ પ્લેયર છે ઘણાં ડાઉનલોડ કરવા માટે પ્રયત્ન કરી રહ્યા છે બાઇટ્સ બાઇટ્સ, ઘણાં ઇન્ટરનેટ પરથી વિડિઓ છે. પરંતુ તે ધીમી છે, તેથી તે પ્રયાસ કરી છે તેમને એક ટોળું ડાઉનલોડ કરવા માટે કે જેથી એક બફર, કન્ટેનર, ભરવા માટે તમે તે પછી કરી શકો છો પૂરતી બાઇટ્સ છે , તમે વિડિઓ બતાવો સતત pausing વગર. પરંતુ તે તમે કરી શકો છો, બહાર વળે આ મોટી એક બફર છે. પરંતુ આ ખૂબ માહિતી મૂકવા પ્રયાસ તે છે, અને ખૂબ જ ખરાબ વસ્તુઓ થાય છે શકે છે. દાખલા તરીકે તેથી, ચાલો જોવા દો ઉદાહરણ આ અંતિમ સતામણી. આ અન્ય કાર્યક્રમ છે કે, પ્રથમ નજરમાં, સુપર ઉપયોગી કંઈપણ કરતું નથી. તે એક મુખ્ય કાર્ય મળ્યું છે કે એફ, કે કાર્ય કહે છે. અને તે કાર્ય, એફ, અહીં છે એક કોલસો બનાવો એરે, કદ 12, સી કહેવાય છે. અને પછી તે આ ઉપયોગ છે નવા કાર્ય strncpy કહેવાય છે. તે આ સરળ સાથે, તે તારણ આપે છે કોડ સરળ લાઇન, માત્ર બે રેખાઓ, અમે મારા સમગ્ર કાર્યક્રમ કર્યા છે અને તેથી, મારા સમગ્ર કોમ્પ્યુટર, અને મારા વપરાશકર્તા એકાઉન્ટ, અને મારા હાર્ડ કોઈને પણ સંભવિત સંવેદનશીલ વાહન જે જાણે છે અને ચલાવવા માટે પૂરતી સારી છે ચોક્કસ આદેશ વાક્ય સાથે આ કાર્યક્રમ દલીલ. અન્ય શબ્દોમાં, જો આ ખરાબ વ્યક્તિ લખીને argvargv [1] ની અંદર મૂકે છે કીબોર્ડ ખૂબ જ ખાસ રચના પર શબ્દમાળા નથી, એબીસી, 123, પરંતુ અનિવાર્યપણે, એક્ઝેક્યુટેબલ પ્રતિનિધિત્વ કરે છે બાઈનરી પ્રતીકો કોડ છે, તે અથવા તેણી લખ્યું કે કાર્યક્રમ, છે, કે જે આ સરળ કાર્યક્રમ, સાથે કાર્યક્રમો હજારો પ્રતિનિધિ કે, daresay, તેવી જ રીતે સંવેદનશીલ હોય છે તે અથવા તેણી આખરે બધા કાઢી શકો છો મારા હાર્ડ ડ્રાઇવ પર ફાઈલો, એક વિચાર તે અથવા તેણી કરી શકો છો કે જેથી પ્રોમ્પ્ટ ખીલેલું તેમના પોતાના પર આદેશો લખો મને બધી ફાઈલો ઇમેઇલ. હું શું કરી શકો છો કે જે કંઈપણ તેમણે અથવા તે આ કોડ સાથે કરી શકો છો. અમે તદ્દન હજુ સુધી આ હલ નહીં. અને હકીકતમાં, તે બનશે થોડી ચિત્ર સમાવેશ આ જેમ, અમે ટૂંક સમયમાં આવે પડશે જે તમામ વધુ સારું સમજવા માટે. પરંતુ આજે માટે, ચાલો પર અંત દો , થોડી વધારે આસ્થાપૂર્વક, શું છે સમજી xkcd મજાક, અમે આગામી સમય ફરી શરૂ ત્યાં સુધી. અધિકાર છે. બુધવારે તમે જુઓ. [સંગીત વગાડવાનો] વક્તા: અને હવે, ઊંડા Daven Farnham દ્વારા વિચારો,. મેમરી એક ખૂંટો માં જમ્પિંગ જેવી છે એક રવિવાર બપોરે સોનેરી પાંદડા. પવન ફૂંકાતા, tossing તમારા ઓહ hair--, હું દિવસ when-- ચૂકી [હાસ્ય]