[Powered by Google Translate] [பகுதி 4 - மேலும் வசதியான]
[ராப் Bowden - ஹார்வர்ட் பல்கலைக்கழகம்]
[இந்த CS50 உள்ளது. - CS50.TV]
உங்களுக்கு என்று தெரியாது வழக்கில் நாம், ஒரு வினாடி வினா நாளை வேண்டும்.
அதை நீங்கள் வர்க்கம் பார்க்க முடியும் அல்லது வர்க்கம் பார்க்க வேண்டும் எல்லாம் மீது அடிப்படையில் தான்.
என்று அவர்கள் மிக சமீபத்திய தலைப்பு கூட, சுட்டிகள் அடங்கும்.
நீங்கள் குறைந்தது இன்னும் அதிக அளவு புரிந்து கொள்ள வேண்டும்.
நீங்கள் வினாடி வினா புரிந்து வேண்டும் வர்க்கத்தின் சென்று அந்த எதையும்.
நீங்கள் அவர்கள் மீது கேள்விகள் இருந்தால், அதனால், நீங்கள் இப்போது அவர்களை கேட்கலாம்.
நீங்கள் கேள்விகளை கேட்க அங்கு ஆனால் இந்த ஒரு மாணவர் தலைமையிலான மிகவும் அமர்வு போகிறது
எனவே வட்டம் மக்கள் கேள்விகள்.
யாரும் கேள்விகள்?
ஆம். >> [மாணவர்] நீங்கள் சுட்டிகள் மீது மீண்டும் போக முடியுமா?
நான் சுட்டிகள் மேல் போகலாம்.
உங்கள் மாறிகள் அனைத்து அவசியம், நினைவக வாழ
ஆனால் பொதுவாக நீங்கள் அதை பற்றி கவலைப்பட வேண்டாம், நீங்கள் தான் x + 2 மற்றும் y + 3 என்று
மற்றும் தொகுப்பி விஷயங்களை நீங்கள் வாழ்க்கை எங்கே கண்டுபிடிக்க முடியும்.
நீங்கள் இப்போது நீங்கள் வெளிப்படையாக அந்த நினைவக முகவரிகளை பயன்படுத்தி, சுட்டிகள் கையாள்வதில்.
எனவே ஒரு மாறி மட்டுமே எப்போதும் எந்த நேரத்திலும் ஒரு முகவரியில் வசிக்கும்.
நாம் ஒரு சுட்டிக்காட்டி அறிவிக்க வேண்டும் என்றால், என்ன வகை போன்ற போகிறார்கள்?
>> நான் ஒரு சுட்டிக்காட்டி ப அறிவிக்க விரும்புகிறேன். வகை என்ன இருப்பான்?
[மாணவர்] எண்ணாக * ப. >> சரி. எனவே எண்ணாக * ப.
எப்படி நான் அதை x சுட்டி செய்ய? >> [மாணவர்] ampersand.
[Bowden] எனவே ampersand மொழியில் ஆபரேட்டர் முகவரி என்று அழைக்கப்படுகிறது.
அதனால் நான் சொல்ல & போது x அது மாறி x நினைவக முகவரி போகிறது.
எனவே இப்போது நான் சுட்டிக்காட்டி ப வேண்டும், மற்றும் எங்கேயும் என் குறியீடு நான் * ப பயன்படுத்தலாம்
அல்லது நான் x பயன்படுத்த முடியும் அது சரியான ஒன்று இருக்கும்.
(* ப). இந்த என்ன செய்கிறார்? அந்த நட்சத்திரம் என்ன அர்த்தம்?
[மாணவர்] அந்த சமயத்தில் ஒரு மதிப்பு பொருள். >> சரி.
நாம் அது இருக்கும் என்றால், அதை வரைபடங்களை அவுட் வரைய மிகவும் பயனுள்ளதாக இருக்கும்
இந்த மதிப்பு 4 வேண்டும் நடந்தால் அது x நினைவகம் ஒரு சிறிய பெட்டி, எங்கே
நாம், ப நினைவகம் ஒரு சிறிய பெட்டி வேண்டும்
அதனால் x க்கு ப புள்ளிகள், நாம் ப x ஒரு அம்புக்குறி வரைய.
நாம் சொல்லும் போது * ப நாம் ப என்று பாக்ஸ் சென்று சொல்கிறீர்கள்.
நட்சத்திர அம்பு பின்பற்ற மற்றும் பிறகு அங்கேயே நீ அந்த பெட்டியில் வைத்து விரும்புகிறீர்கள் என்ன.
அதனால் நான் * ப = 7 கூற முடியும்; அந்த x மற்றும் அந்த 7 மாற்றம் என்பது பெட்டியில் போகலாம்.
அல்லது நான் சொல்ல முடியும் எண்ணாக z = * ப * 2; குழப்பம் என்று அது நட்சத்திரம், நட்சத்திர ஏனெனில்.
ஒரு நட்சத்திரம் ப dereferencing உள்ளது, மற்ற நட்சத்திர 2 பெருக்குவதன்.
நான் அதே x உடன் * ப பதிலாக இருக்க முடியும் கவனிக்க.
அதே வழியில் அவர்கள் பயன்படுத்தலாம்.
பின்னர் நான் ஒரு முற்றிலும் புதிய விஷயம் ப புள்ளி வைத்திருக்க முடியும்.
நான் சொல்ல ப = &z;
எனவே இப்போது x க்கு இனி புள்ளிகள் பி; அது z சுட்டி காட்டும்.
மற்றும் நான் * ப செய்ய எந்த நேரத்தில் அது z செய்து அதே தான்.
நாம் செயல்பாடுகளை ஏற்பட்டதற்கு துவக்க முறை இந்த பற்றிய பயனுள்ள விஷயம்.
>> இது ஏதோ அந்த புள்ளிகள் ஒரு சுட்டிக்காட்டி அறிவிக்க தேவையில்லாத மாதிரி தான்
பின்னர் நீங்கள் அதை dereferencing
நீங்கள் ஆரம்பிக்க அசல் மாறி பயன்படுத்தப்படும் போது.
ஆனால் நீங்கள் செயல்பாடுகளை பெற போது - மிகவும், நாம் சில செயல்பாடு, int foo வேண்டும் சொல்கிறேன்
ஒரு சுட்டிக்காட்டி எடுத்து தான் * ப = 6 இல்லை;
நாம் இடமாற்று உடன் முன் பார்த்தேன் போல, நீங்கள் ஒரு சிறந்த swap மற்றும் ஒரு தனி செயல்பாடு செய்ய முடியாது
சி எல்லாம் எப்போதும் மதிப்பு போய் மட்டுமே முழு தேர்ச்சி.
நீங்கள் சுட்டிகள் கடந்து நீங்கள் கூட நீங்கள் மதிப்பு போய்.
இது மிகவும் மதிப்பு நினைவக முகவரிகள் என்று நடக்கும்.
அதனால் நான் சொல்ல foo (ப); நான் செயல்பாடு foo என சுட்டிக்காட்டி கடந்து போகிறேன்
பின்னர் foo * ப = 6 செய்கிறார்;
உள்ளே அந்த செயல்பாடு மிகவும், * ப, இன்னும் x ஆகும்
அந்த செயல்பாடு உள்ள ஆகியவற்றை நோக்காகக்கொண்ட இல்லை, ஏனெனில் ஆனால் நான் அந்த விழாவிற்கு உள்ளே x பயன்படுத்த முடியாது.
எனவே * ப = 6 நான் மற்றொரு செயல்பாடு ஒரு உள்ளூர் மாறி அணுகலாம் ஒரே வழி.
அல்லது, நன்றாக, சுட்டிகள் நான் மற்றொரு செயல்பாடு ஒரு உள்ளூர் மாறி அணுகலாம் ஒரே வழி ஆகும்.
[மாணவர்] நாம் ஒரு சுட்டிக்காட்டி திரும்ப வேண்டும் என்று. நீங்கள் எப்படி சரியாக செய்ய வேண்டும்?
[Bowden] எண்ணாக y = 3 போன்ற ஏதாவது ஒரு சுட்டிக்காட்டி திரும்ப; திரும்ப & y? >> [மாணவர்] சரி.
[Bowden] சரி. நீங்கள் இதை செய்ய கூடாது. இந்த மோசமாக உள்ளது.
நான் இந்த விரிவுரை ஸ்லைடுகள் பார்த்த என்று நீங்கள் நினைவகத்தை இந்த வரைபடம் பார்த்து தொடங்கியது
அங்கு இங்கு நீங்கள் நினைவக முகவரி 0 கிடைத்துவிட்டது
கீழே இங்கே நீங்கள் 32 நினைவக முகவரி 4 நிகழ்ச்சிகள் அல்லது 2 வேண்டும்.
எனவே நீங்கள் சில விஷயங்களை மற்றும் சில பொருட்களை வாங்கி, பின்னர் உங்கள் ஸ்டாக் இல்லை
நீங்கள் தான் வளர்ந்து, கற்க தொடங்கினார் உங்கள் குவியல், கிடைத்துவிட்டது.
[மாணவர்] ஸ்டேக் மேலே குவியல் இல்லையா?
>> Yeah. குவியல் மேல் உள்ளது, இல்லையா? >> [மாணவர்] சரி, அவர் மேல் 0 வைத்து.
[மாணவர்] ஓ, அவர் மேல் 0 வைத்து. >> [மாணவர்] ஓ, சரி.
நிபந்தனைகள்: எனிவேர் CS50 நீங்கள் இந்த வழியை பார்க்க போகிறோம். >> [மாணவர்] சரி.
இது தான் நீங்கள் முதல், ஸ்டாக்குகள் பார்க்கிறோம் போது
நீங்கள் ஒருவர் மேல் விஷயங்கள் குவியலிடுதல் என்று ஒரு அடுக்கை நினைக்கும் போது எனக்கு பிடிக்கும்.
நாம் ஸ்டேக் ஒரு அடுக்கு வழக்கமாக போன்ற வளர்ந்து அதனால் சுற்றி இந்த புரட்ட முனைகின்றன
அதற்கு பதிலாக ஸ்டேக்கின் கீழே தொங்கும். >> [மாணவர்] இருப்பினும் குவியல்களின் தொழில்நுட்ப, மிக வளர என்ன?
அது வளர நீங்கள் என்ன சார்ந்திருக்கிறது.
ஸ்டாக் மற்றும் குவியல் எப்போதும் எதிர் திசைகளில் வளர்ந்து.
குவியல் எப்போதும் அது வளரும் என்று உணர்வு வளர்ந்து வருகிறது
அதிக நினைவக முகவரிகள், மற்றும் குவியல் கீழே பெருகி நோக்கி
அதில் கீழ் நினைவக முகவரிகள் நோக்கி வளரும்.
எனவே உயர் 0 மற்றும் கீழ் உயர் நினைவக முகவரிகள் ஆகும்.
அவர்கள் வெறும் திசைகளில் எதிர்ப்பதற்கு, வளர்ந்து வரும் இரு.
[மாணவர்] நீங்கள் கீழே ஸ்டாக் வைக்க வேண்டும், ஏனெனில் நான் அந்த பொருள்
இது ஸ்டேக் ஒரு குவியல் மேலே தொடங்க காரணம் இன்னும் உள்ளுணர்வு தெரிகிறது, ஏனெனில்
குவியல், மிக தன்னை மேல் மிகவும் that's தான் - >> சரி.
நீங்கள் ஸ்டேக் அதிகமாக வளர்ந்து பெரிய என குவியல் என்று, ஆனால்.
எனவே ஸ்டேக் நாம் வகையான வளர்ந்து காட்ட வேண்டும் என்று உள்ளது.
ஆனால் எல்லா இடங்களிலும் நீங்கள் இல்லையெனில் ஆனால் மேலே முகவரியை 0 காட்ட போகிறேன்
கீழே உள்ள உயர்ந்த நினைவக முகவரி, இந்த நினைவகம் உங்கள் வழக்கமான காட்சி உள்ளது.
>> நீங்கள் ஒரு கேள்வி இருக்கிறது?
[மாணவர்] நீங்கள் எங்களுக்கு குவியல் பற்றி மேலும் சொல்ல முடியுமா?
Yeah. நான் ஒரு இரண்டாவது அந்த கிடைக்கும்.
முதல், & y திரும்பி ஏன் திரும்பி சென்று, ஒரு கெட்ட விஷயம்
ஸ்டாக் நீங்கள் செயல்பாடுகளை அனைத்து பிரதிநிதித்துவப்படுத்தும் ஸ்டேக் பிரேம்கள் ஒரு கொத்து வேண்டும்
இது அழைக்கப்படுகிறது.
முந்தைய பொருட்களை புறக்கணிக்கும் எனவே, உங்கள் ஸ்டேக் மேல் எப்போதும் முக்கிய செயல்பாடு இருக்கும்
என்று அழைக்கப்படும் வருகின்றன என்று முதல் விழா என்பதால்.
பிறகு மற்றொரு செயல்பாடு அழைக்க போது, ஸ்டாக் கீழே வளர போகிறது.
நான் சில செயல்பாடு, foo, அழைத்து தன்னுடைய ஸ்டாக் சட்டகமானது பெறுகிறார் என்றால்,
சில செயல்பாடு, பட்டியில் அழைக்க முடியும்; அதன் சொந்த ஸ்டாக் சட்டகமானது பெறுகிறார்.
மேலும், பட்டை சுழல்நிலை முடியும் அது தன்னை அழைக்க முடியும்
அதனால் பட்டியில் இரண்டாவது அழைப்பு அதன் சொந்த ஸ்டாக் சட்டகமானது போகிறது என்று.
அதனால் இந்த ஸ்டேக் பிரேம்கள் என்ன உள்ளூர் மாறிகள் அனைத்தும்
அந்த செயல்பாடு வாதங்கள் எல்லாம் -
இந்த செயல்பாடு உள்ளமைவாக ஆகியவற்றை நோக்காகக்கொண்ட என்று எந்த விஷயங்கள் இந்த ஸ்டேக் பிரேம்கள் போக.
அதனால், நான் பட்டி போன்ற ஏதாவது ஒரு விழாவில் கூறினார் போது பொருள்
நான் ஒரு முழு அறிவிக்க பின்னர் அந்த முழு ஒரு சுட்டிக்காட்டி திரும்பி போகிறேன்.
எனவே y அங்கு வசிக்கிறார்?
[மாணவர்] y பட்டியில் வாழ்கிறார். >> [Bowden] சரி.
எங்கோ நினைவகம் இந்த சிறிய சதுர அது உள்ள y என்று ஒரு littler சதுர.
நான் திரும்பி & y போது, நான் நினைவகம் இந்த சிறிய தொகுதி ஒரு சுட்டிக்காட்டி திரும்ப ஒப்படைக்கிறேன்.
ஆனால் பின்னர் ஒரு விழாவில் திருப்பி, அதன் ஸ்டாக் சட்டகமானது ஸ்டேக் ஆஃப் வந்துவிட்டது.
இது ஸ்டேக் என்று ஏன் என்று.
நீங்கள் என்ன அது, ஸ்டாக் தரவு கட்டமைப்பு போல.
அல்லது தட்டுக்களில் ஒரு அடுக்கு போன்ற, எப்போதும் உதாரணம்
முக்கிய கீழே போக போகிறது, பிறகு நீங்கள் அழைக்க முதல் செயல்பாடு, அதற்கு மேல் செல்ல போகிறது
நீங்கள் என்று கூறப்படும் அனைத்து செயல்பாடுகளில் இருந்து திரும்பி வரும் வரை, நீங்கள் முக்கிய திரும்ப பெற முடியாது
அது முதலிடத்தில் உள்ளது.
>> நீங்கள் செய்தால் [மாணவர்] அதனால் & y, அந்த மதிப்பு அறிவிப்பு இல்லாமல் மாறுதலுக்குட்படக்கூடியது திருப்பி.
ஆமாம், it's - >> அது மறைந்து இருக்க முடியும் [மாணவர்]. >> சரி.
நீங்கள் முயற்சி செய்தால் - அது முற்றிலும் தான் -
அது ஒரு சுட்டிக்காட்டி திரும்பி ஏனென்றால் இது, ஒரு முழு எண்ணாக * பார் என்று
அதன் திரும்ப வகை எண்ணாக * ஆகும்.
இந்த செயல்பாடு திரும்ப மதிப்பு பயன்படுத்துகிறார்கள் என்றால், அது வரையறுக்கப்படாத நடத்தை தான்
என்று சுட்டிக்காட்டி மோசமான நினைவக இடங்களும், ஏனெனில். >> [மாணவர்] சரி.
அதனால் என்ன என்றால், எடுத்துக்காட்டாக, நீங்கள் அறிவித்தார் எண்ணாக * y = malloc (sizeof (int))?
நல்லது. ஆம்.
[மாணவர்] நாம் மறுசுழற்சி தொட்டிக்கு பொருட்களை இழுத்து போது நாம் எப்படி பேசினார்
அவர்கள் உண்மையில் அழிந்துவிடும்; நாம் அவர்களது சுட்டிகள் இழக்க.
எனவே இந்த விஷயத்தில் நாம் உண்மையில் அது நினைவகத்தில் இன்னும் மதிப்பு அழிக்க அல்லது?
பெரும்பாலான, அது இன்னும் இருக்க போகிறது.
ஆனால் நாம் வேறு சில செயல்பாடு, பஜ் அழைக்க நடக்கும் என்று.
பஜ் இங்கே அதன் சொந்த ஸ்டாக் சட்டகமானது போகிறது.
இது, இந்த விஷயங்களை எல்லாம் மேற்சேர்க்கை வேண்டும் நடக்கிறது
பின்னர் நீங்கள் பின்னர், நீங்கள் முன் வந்தது என்று சுட்டிக்காட்டி முயற்சி மற்றும் பயன்படுத்தினால்
அதே மதிப்பு இருக்க போவதில்லை.
அதை நீங்கள் செயல்பாடு பஜ் என்று காரணம் மட்டும் மாற்ற வேண்டும் நடக்கிறது.
[மாணவர்] ஆனால் நாம், நாம் இன்னும் 3 கிடைக்கும் அல்லவா?
[Bowden] அனைத்து வாய்ப்பு, நீங்கள் என்று.
ஆனால் நீங்கள் அந்த தங்கியிருக்க முடியாது. சி தான் வரையறுக்கப்படாத நடத்தை என்கிறார்.
>> [மாணவர்] ஓ, அது. சரி.
Malloc பயன்படுத்தி வருகிறது அங்கு நீ ஒரு சுட்டிக்காட்டி திரும்ப வேண்டும் போது, இந்த.
நான் எழுதுவது நான் தான் malloc திருப்பி (3 * sizeof (int)).
நாம் ஒரு இரண்டாவது அதிக malloc மேல் போகலாம், ஆனால் malloc யோசனை உங்கள் உள்ளூர் மாறிகள் அனைத்து
எப்போதும் ஸ்டாக் சென்று.
Malloced என்று எதுவும் குவியல் செல்லும், மற்றும் அதை நிரந்தரமாக எப்போதும் குவியல் இருக்கும்
நீங்கள் வெளிப்படையாக அதை விடுவிக்க வரை.
இந்த போது நீங்கள் malloc ஒன்று, அது செயல்பாட்டை மீண்டும் பிறகு உயிர் பிழைக்க நடக்கிறது என்று அர்த்தம்.
இயங்குவதாக நிறுத்தி பிறகு [மாணவர்] அது உயிர் பிழைக்க முடியுமா? >> இல்லை
சரி, அது நிரல் அனைத்து ஓடுவதை செய்து வரை இருக்க போகிறது. >> ஆமாம்.
நாம் இயங்குவதாக நிறுத்தப்படும் போது என்ன நடக்கிறது என்பதை பற்றிய விவரங்கள் மேல் போக முடியும்.
நீங்கள் என்னை ஞாபகப்படுத்த வேண்டும், ஆனால் அது முற்றிலும் ஒரு தனி விஷயம்.
[மாணவர்] எனவே malloc ஒரு சுட்டிக்காட்டி உருவாக்குகிறது? >> சரி.
Malloc - >> [மாணவர்] நான் malloc ஒரு சுட்டிக்காட்டி பயன்படுத்தலாம் என்று நினைவகம் ஒரு தொகுதி நியமிக்கிறார் என்று.
[Bowden] நான் மீண்டும் அந்த வரைபடம் வேண்டும். >> [மாணவர்] இந்த செயல்பாடு என்றாலும், வேலை?
[மாணவர்] சரி, malloc நீங்கள் பயன்படுத்தலாம் என்று நினைவகம் ஒரு தொகுதி நியமிக்கிறார்,
பின்னர் அது நினைவகம் முதல் தொகுதி முகவரி கொடுக்கிறது.
>> [Bowden] சரி. எனவே நீங்கள் malloc, நீங்கள் நினைவகத்தை சில தொகுதி வாட்டி
அந்த குவியல் தற்போது தான்.
குவியல் மிக சிறிய என்றால், குவியல் தான் வளர போகிறது, அது இந்த திசையில் வளரும்.
எனவே குவியல் மிகவும் சிறியது சொல்கிறேன்.
அது சிறிது வளர தான் வளர்ந்தது என்று இந்த தொகுதி ஒரு சுட்டிக்காட்டி திரும்ப பற்றி.
நீங்கள் இலவச பொருட்கள், நீங்கள் குவியல் இன்னும் அறை செய்யும் போது,
எனவே பின்னர் malloc அழைத்து நீங்கள் முன்னர் விடுதலை என்று அந்த நினைவு பயன்படுத்தலாம்.
malloc மற்றும் இலவச பற்றி முக்கியமான விஷயம், நீங்கள் முழுமையான கட்டுப்பாட்டை கொடுக்கிறது என்று
இந்த நினைவகம் தொகுதிகள் வாழ்நாளில்.
உலக மாறிகள் எப்போதும் உயிரோடு இருக்கும்.
உள்ளூர் மாறிகள் தமது எல்லைக்குள் வாழும்.
விரைவில் நீங்கள் ஒரு சுருள் பிரேஸ் கடந்த செல்லவேண்டும், உள்ளூர் மாறிகள் இறந்துவிட்டதாக.
நீங்கள் உயிருடன் இருக்க வேண்டும் போது Malloced நினைவக உயிருடன் இருக்கிறார்
நீங்கள் விடுதலை வேண்டும், அதை சொல்ல போது பின் வெளியிடப்பட்டது.
அந்த உண்மையில், உண்மையில் நினைவகம் மட்டும் 3 வகைகள் உள்ளன.
ஸ்டாக் இது தானாக நினைவக மேலாண்மை, அங்கே.
விஷயங்கள் தானாகவே நடக்கும்.
நீங்கள் int x போது, நினைவக int x ஒதுக்கீடு.
X நோக்கம் வெளியே செல்லும் போது, நினைவக x க்காக மீட்பதற்கு.
பின்னர் மாறும் நினைவக மேலாண்மை, இது malloc என்ன ஆகும், அங்கு
நீங்கள் கட்டுப்படுத்தும் போது அது.
நீங்கள் மாறும் நினைவக மற்றும் ஒதுக்கீடு கூடாது போது முடிவு.
பின்னர் நிலையான இல்லை, இது வெறும், அதை நிரந்தரமாக வாழ்ந்து என்று அர்த்தம்
இது உலக மாறிகள் எவை என்பது.
அவர்கள் நினைவாக தான் எப்போதும் இருக்கும்.
>> கேள்விகள்?
[மாணவர்] நீங்கள் சுருள் ப்ரேஸ் பயன்படுத்தி ஒரு தொகுதி வரையறை முடியுமா
ஆனால் வேண்டும் என்ற ஒரு அறிக்கையை அல்லது அப்படி ஒரு அறிக்கை அல்லது ஏதாவது இருந்தால்?
நீங்கள் ஒரு விழாவில் ஒரு தொகுதி வரையறை செய்யலாம், ஆனால் அதுவும் சுருள் ப்ரேஸ் உள்ளது.
[மாணவர்] எனவே நீங்கள் உங்கள் குறியீடு உள்ள சுருள் ப்ரேஸ்களை ஒரு சீரற்ற ஜோடி போன்ற முடியாது
உள்ளூர் மாறிகள் என்று? >> ஆமாம், நீங்கள்.
Int பட்டியில் உள்ளே நாம் {int y = 3;} முடியும்.
என்று இங்கேயே இருக்க வேண்டும்.
ஆனால் அந்த முற்றிலும் எண்ணாக y நோக்கம் வரையறுக்கிறது.
அந்த இரண்டாவது சுருள் பிரேஸ் பின்னர், y இனி பயன்படுத்த முடியாது.
நீங்கள் என்றாலும், அதை கிட்டத்தட்ட.
, ஒரு திட்டம் முடிவடையும் போது என்ன நடக்கிறது என்பதை மீண்டும் பெற
நாம் மட்டும் விஷயங்கள் எளிதாக செய்ய வேண்டும் என்று ஒரு தவறான கருத்து / பாதி பொய் என்ன இருக்கிறது.
நாம் உங்களுக்கு சொல்ல வேண்டும் என்று நீங்கள் நினைவகத்தை ஒதுக்க போது
நீங்கள் அந்த மாறி ஒரு ரேம் சில துண்டின் ஒதுக்கீடு.
ஆனால் நீங்கள் உண்மையில் நேரடியாக உங்கள் திட்டங்களில் இதுவரை ரேம் தொடுதல்.
நீங்கள் நினைத்து இருந்தால், எப்படி நான் வரைந்த -
நீங்கள் GDB இல் மூலம் சென்றால் மற்றும் உண்மையில், நீங்கள் அதே விஷயத்தை பார்ப்போம்.
பொருட்படுத்தாமல் நீங்கள் உங்கள் நிரல் அல்லது நீங்கள் இயக்கி என்ன திட்டம், ரன் எத்தனை முறை
ஸ்டாக் எப்போதும் தொடங்க போகிறது -
நீங்கள் எப்போதும் முகவரியை oxbffff ஒன்று சுற்றி மாறிகள் பார்க்க போகிறோம்.
அந்த பகுதியில் எங்காவது வழக்கமாக உள்ளது.
ஆனால் எப்படி 2 திட்டங்கள் சாத்தியமான ஒரே நினைவக சுட்டிகளையும் முடியும்?
[மாணவர்] oxbfff ரேம் இருக்க வேண்டும் அமைந்துள்ள சில தன்னிச்சையான பெயர் இல்லை
என்று உண்மையில் செயல்பாடு என போது பொறுத்து வெவ்வேறு இடங்களில் இருக்க முடியும்.
Yeah. கால மெய்நிகர் நினைவகம் உள்ளது.
யோசனை என்று ஒவ்வொரு முறை, உங்கள் கணினியில் இயங்கும் என்று ஒவ்வொரு நிரல்
அதன் சொந்த - முற்றிலும் சுதந்திரமான முகவரியை ஸ்பேஸ் - நாம் 32 பிட்கள் அனுமானிக்கலாம்.
இந்த முகவரி இடம்.
அதை பயன்படுத்த அதன் சொந்த முற்றிலும் சுதந்திரமான 4 ஜிகாபைட் உள்ளது.
>> நீங்கள் ஒரே நேரத்தில் 2 திட்டங்கள் ரன் என்றால், இந்த திட்டத்தை, தன்னை 4 ஜிகாபைட் காண்கிறது
இந்த திட்டம், தன்னை 4 ஜிகாபைட் காண்கிறது
மேலும் இந்த திட்டத்தை dereference ஒரு சுட்டிக்காட்டி முடியாது
இந்த திட்டத்திற்கு நினைவக முடிவடையும்.
என்ன மெய்நிகர் நினைவகம் ஒரு செயல்முறைகள் முகவரியை இடத்தில் இருந்து ஒரு ஒப்பீட்டை உள்ளது
ரேம் மீது உண்மையான விஷயத்தை.
அது எனக்கு தெரியும் உங்கள் இயங்கு வரை தான்,
ஏ, இந்த பையன் dereferences சுட்டிக்காட்டி oxbfff, உண்மையில் பொருள்
அவர் ரேம் பைட் 1000, விரும்புகிறது என்று
அதேசமயம், இந்த திட்டத்தை dereferences oxbfff என்றால், அவர் உண்மையில் ரேம் பைட் 10000 விரும்புகிறார்.
அவர்கள் தன்னிச்சையாக வெகு தொலைவில் இருக்க முடியும்.
இந்த ஒரு நிகழ்ச்சி முகவரியை இடத்தில் விஷயங்களை கூட உண்மைதான்.
எனவே இப்படி தன்னை அனைத்து 4 ஜிகாபைட் காண்கிறது, ஆனால் சொல்ல நாம் -
[மாணவர்] ஒவ்வொரு முறை உள்ளதா -
நாம் உங்களுக்கு ரேம் மட்டும் 4 ஜிகாபைட் ஒரு கணினி வேண்டும் என்று.
ஒவ்வொரு முறை முழு 4 ஜிகாபைட் பார்க்க வேண்டும்? >> ஆமாம்.
ஆனால் அதை பார்க்கும் 4 ஜிகாபைட் பொய்.
அது அது வேறு செயல்முறை உள்ளது தெரியவில்லை, ஏனெனில் இது அனைத்து இந்த நினைவு நினைக்கிறார்கள்.
அது உண்மையில் தேவைப்படுகிறது அது மட்டும் எவ்வளவு நினைவகம் பயன்படுத்தும்.
இயங்கு இந்த ரேம் கொடுக்க போவதில்லை
இந்த முழு பகுதியில் எந்த நினைவகத்தை பயன்படுத்தி இல்லை என்றால்.
அது அந்த பகுதியில் நினைவகம் கொடுக்க போவதில்லை.
ஆனால் கருத்து என்பது - நான் நினைத்து பார்க்கிறேன் - நான் ஒரு ஒப்புமை நினைக்க முடியாது.
ஒப்புமை கடினம்.
மெய்நிகர் நினைவகம் பிரச்சினைகளில் ஒன்று அல்லது அதை தீர்க்கும் காரியங்கள் ஒன்று
செயல்முறைகள் ஒருவர் முழுமையாக தெரியாமல் இருக்க வேண்டும்.
அதனால் நீங்கள் எந்த நிரலை எழுத முடியும் என்று தான் dereferences எந்த சுட்டிக்காட்டி,
நான், * (ox1234) என்ற ஒரு திட்டத்தை எழுத விரும்புகிறேன்
மற்றும் இது என்று dereferencing நினைவக முகவரியை 1234.
>> ஆனால் அது என்ன 1234 வழிமுறையாக மொழிபெயர்க்க இயங்கு வரை தான்.
நீங்கள் 1234, இந்த செயல்முறை சரியான நினைவக முகவரி என்ன
இது ஸ்டாக் அல்லது ஏதாவது போல், இந்த என்று நினைவக முகவரி மதிப்பு வரும்
இதுவரை செயல்முறை தெரியும் என்று.
இது தரையிறக்கும் நடந்தால் ஆனால் அது 1234, சரியான முகவரி அல்ல
ஸ்டாக் அப்பால் என்று இங்கே நினைவு சில சிறிய துண்டு மற்றும் குவியல் அப்பால்
நீங்கள் உண்மையில் நீங்கள் segfaults போன்ற பொருட்களை வாங்கி அதற்கு அந்த பயன்படுத்தப்படும் இல்லை
நீங்கள் தொட்டு கூடாது என்று நினைவு தொட்டு ஏனெனில்.
இது உண்மைதான் -
ஒரு 32 பிட் கணினியில், 32 பிட்கள் ஒரு நினைவக முகவரி வரையறுக்க 32 பிட்கள் வேண்டும் என்பதாகும்.
அல்லது 4 பைட்டுகள் - சுட்டிகள் 8 பைட்டுகள் ஏன் 32 பிட்கள் 8 பைட்டுகள் ஏனெனில் அது.
சுட்டிகள் 4 பைட்டுகள்.
எனவே நீங்கள் oxbfffff போன்ற சுட்டிக்காட்டி பார்க்கும் போது, அது -
எந்த நிரல் உள்ள நீங்கள், எந்த தன்னிச்சையான சுட்டிக்காட்டி கட்ட முடியாது
எங்கேயும் ox0 இருந்து எருது 8 f's வேண்டும் - ffffffff.
[மாணவர்] அவர்கள் 4 பைட்டுகள் என்று சொல்ல வில்லையா? >> சரி.
[மாணவர்] பிறகு ஒவ்வொரு பைட் வேண்டும் - >> [Bowden] பதின்அறுமம்.
அறுபதின்ம - 5, 6, 7, 8. சுட்டிகள் நீ எப்போதும் அறுபதின்ம பார்க்க போகிறோம்.
அதை நாம் சுட்டிகள் வகைப்படுத்த எப்படி மட்டுமல்ல.
அறுபதின்ம ஒவ்வொரு 2 இலக்கங்கள் 1 பைட் ஆகும்.
எனவே 4 பைட்டுகள் 8 அறுபதின்ம இலக்கங்கள் இருக்க நடக்கிறது.
அதனால் ஒரு 32 பிட் கணினியில் ஒவ்வொரு சுட்டிக்காட்டி, 4 பைட்டுகள் போகிறது
இது உங்கள் செயலை நீங்கள் எந்த தன்னிச்சையான 4 பைட்டுகள் கட்ட முடியும்
மேலும், இது ஒரு சுட்டிக்காட்டி அவுட் செய்ய
எந்த அளவிற்கு இது தெரியும் தான், அது நினைவகம் 32 பைட்டுகள் ஒரு முழு 2 உரையாற்ற முடியும்.
உண்மையில் அந்த அணுகல் இல்லை என்றாலும்,
உங்கள் கணினி மட்டும் 512 மெகாபைட் உள்ளது கூட, அது அந்த அளவு நினைவகத்தை கொண்டுள்ளது நினைக்கிறார்கள்.
மற்றும் இயங்கு அதை மட்டுமே நீங்கள் உண்மையில் என்ன ஒதுக்க என்று போதுமான புத்திசாலி.
4 நிகழ்ச்சிகள்: அது, ஓ, ஒரு புதிய செயல்முறை செல்லவில்லை.
>> Yeah. >> [மாணவர்] எருது என்ன அர்த்தம்? ஏன் அதை எழுத?
அது அறுபதின்ம குறியீடு உள்ளது.
நீங்கள் காளை ஒரு எண் தொடக்கத்தில் பார்க்கும் போது, அடுத்தடுத்த விஷயங்களை அறுபதின்ம இருக்கும்.
[மாணவர்] நீங்கள் ஒரு திட்டம் முடிவடையும் போது என்ன நடக்கிறது என்பதை பற்றி விளக்கினார். >> ஆமாம்.
என்ன ஒரு திட்டம் முடிவடையும் போது நடக்கும் இயக்க அமைப்பு
வெறும் erases இந்த முகவரி உள்ளது, அவ்வளவு தான் என்று காணுங்கள்.
இயங்கு இப்போது பயன்படுத்த மற்றொரு திட்டம் என்று நினைவு கொடுக்க முடியும்.
[மாணவர்] சரி.
எனவே நீங்கள் குவியல் அல்லது ஸ்டாக் அல்லது உலக மாறிகள் அல்லது ஏதாவது ஏதாவது ஒதுக்கி போது,
அவர்கள் தான் விரைவில் திட்டம் முடிவடையும் என மறைந்துவிடும்
இயங்கு இப்போது எந்த பணியில் என்று நினைவு கொடுக்க இலவச என்பதால்.
[மாணவர்] எழுதப்பட்ட மதிப்புகள் இன்னும் ஒருவேளை உள்ளன என்றாலும்? >> சரி.
மதிப்புகள் இன்னும் வாய்ப்பு இருக்கிறது.
அது அது அவர்கள் பெற கடினமாக இருக்கும் நடக்கிறது.
இது ஒரு நீக்கப்பட்ட கோப்பில் பெற விட அதை அவர்கள் பெற மிகவும் கடினம்
நீக்கப்பட்டவை கோப்பு வகை நீண்ட நேரம் அங்கு உட்கார்ந்து வன் நிறைய பெரிய காரணம்.
அதை நினைவு வெவ்வேறு பகுதிகளில் மேலெழுத நடக்கிறது
அந்த கோப்பு இருக்க பயன்படும் நினைவகம் துண்டின் மேலெழுத நடக்கும் முன்.
ஆனால் பிரதான நினைவகம், வேகமாக நிறைய மூலம் நீங்கள் சுழற்சி ரேம்,,
மிக விரைவாக மறைந்து இருக்க போகிறது.
இந்த அல்லது வேறு ஏதாவது கேள்விகள்?
[மாணவர்] நான் வேறு ஒரு தலைப்பை பற்றி கேள்விகள். சரி >>.
யார் இந்த கேள்விகள்?
>> சரி. வேறு தலைப்பு. >> [மாணவர்] சரி.
நான், நடைமுறையில் சோதனைகள் சில நடக்கிறது
அவர்களை ஒன்று அது sizeof பற்றி
மற்றும் மதிப்பு அது திரும்பும் அல்லது வேறு மாறியின் வகை என்று. >> ஆமாம்.
இது int, நீண்ட இருவரும் மீண்டும் 4 இருவரும், அதனால் அவர்கள் இருவரும் 4 பைட்டுகள் நீண்ட என்று கூறினார்.
ஒரு முழு எண்ணாக மற்றும் நீண்ட இடையே எந்த வித்தியாசமும் இல்லை, அல்லது அது அதே விஷயம்?
ஆம், ஒரு வித்தியாசம் உள்ளது.
சி நிலையான -
நான் ஒருவேளை குழப்பம் ஏற்படுத்த போகிறேன்.
சி நிலையான வெறும் சி, சி உத்தியோகபூர்வ ஆவணத்தில் என்ன இருக்கிறது
இது சொல்வது.
எனவே சி நிலையான ஒரு எரிப்பதை எப்போதும் எப்போதும் 1 பைட் என்று கூறுகிறார்.
பிறகு எல்லாம் - ஒரு குறுகிய எப்போதும் தான் அதிகமாக அல்லது ஒரு எரிப்பதை சமமாக இருப்பது வரையறுக்கப்பட்டுள்ளது.
இந்த கண்டிப்பாக விட, ஆனால் நேர்மறையான இல்லை இருக்கலாம்.
ஒரு முழு எண்ணாக தான் அதிகமாக அல்லது ஒரு குறுகிய சமமாக இருப்பதால் வரையறுக்கப்பட்டுள்ளது.
மற்றும் ஒரு நீண்ட தான் அதிகமாக அல்லது ஒரு முழு எண்ணாக சம என வரையறுக்கப்பட்டுள்ளது.
மற்றும் ஒரு நீண்ட நீண்ட விட அல்லது ஒரு நீண்ட சமமாக இருக்கும்.
எனவே சி நிலையான வரையறுக்கிறது மட்டும் தான் எல்லாம் உறவினர் வரிசை ஆகும்.
பொருட்களை எடுத்து அந்த நினைவு உண்மையான அளவு, வரை செயல்படுத்த பொதுவாக உள்ளது
ஆனால் அது மிகவும் நன்றாக இந்த வரையறை. >> [மாணவர்] சரி.
எனவே குறும்படங்களின் எப்போதும் 2 பைட்டுகள் இருக்க போகிறோம்.
Ints எப்போதும் 4 பைட்டுகள் இருக்க போகிறோம்.
நீண்ட longs எப்போதும் 8 பைட்டுகள் இருக்க போகிறோம்.
அது ஒரு 32 பிட் அல்லது 64 பிட் சிஸ்டம் பயன்படுத்தும் என்பதை பொறுத்து, longs.
எனவே ஒரு நீண்ட அமைப்பை ஒத்ததாக போகிறது.
நீங்கள் அப்ளையன்ஸ் போன்ற ஒரு 32 பிட் கணினியில் பயன்படுத்தினால், அது 4 பைட்டுகள் இருக்க போகிறது.
நீங்கள் சமீபத்தில் கணினிகள் நிறைய போன்ற ஒரு 64 பிட் பயன்படுத்தினால், அது 8 பைட்டுகள் இருக்க போகிறது.
>> Ints எப்போதும் இந்த கட்டத்தில் 4 பைட்டுகள்.
நீண்ட longs எப்போதும் 8 பைட்டுகள்.
கடந்த காலத்தில், ints மட்டும் 2 பைட்டுகள் இருக்க வேண்டும்.
ஆனால் இந்த முற்றிலும் விட மற்றும் சமமாக இந்த உறவுகள் அனைத்தும் நிறைவு அறிகிறோம்.
எனவே நீண்ட செய்தபின் முழு எண்ணாக அதே அளவு இருக்கும் அனுமதிக்கப்படுகிறது,
இது ஒரு நீண்ட நீண்ட அதே அளவு இருக்க அனுமதிக்கப்படும்.
மற்றும் அது அவ்வாறு அமைப்புகள் 99,999%, இது சமமாக இருக்க வேண்டும் என்று இருக்கும் நடக்கிறது
ஒரு முழு எண்ணாக அல்லது நீண்ட காலம் ஒன்று. இது 32 பிட் அல்லது 64 பிட் சார்ந்துள்ளது. >> [மாணவர்] சரி.
மிதவைகள் உள்ள, பிட்கள் அடிப்படையில் நியமிக்கப்பட்ட தசம புள்ளி எப்படி இருக்கிறது?
பைனரி என விரும்புகிறீர்களா? >> சரி.
நீங்கள் CS50 தெரியும் தேவையில்லை.
நீங்கள் கூட 61 என்று அறிய முடியாது.
நீங்கள் எந்த போக்கில் என்று நிஜமாகவே இல்லை.
அது ஒரு பிரதிநிதித்துவம் இல்லை.
நான் சரியான பிட் allotments மறக்க.
மிதவை புள்ளி கருத்தை நீங்கள் பிரதிநிதித்துவப்படுத்துவதாக பிட்கள் ஒரு குறிப்பிட்ட எண்ணை ஒதுக்கி உள்ளது -
அடிப்படையில், எல்லாம் அறிவியல் குறியீடு உள்ளது.
எனவே நீங்கள் 1,2345 போன்ற பல தன்னை, பிரதிநிதித்துவப்படுத்துவதாக பிட்கள் ஒரு குறிப்பிட்ட எண்ணிக்கையிலான ஒதுக்க.
நான் 5 மேற்பட்ட இலக்கங்கள் கொண்ட எண்ணை குறிக்கும் முடியாது.
இது போன்ற இருக்கிறது என்று நீங்கள் கூட பிட்கள் ஒரு குறிப்பிட்ட எண்ணிக்கையிலான ஒதுக்க
என்று நீங்கள் முடியும் மிகப்பெரிய உள்ளீடு போல் நீங்கள் தான், ஒரு குறிப்பிட்ட எண்ணிக்கை வரை செல்ல முடியும்,
நீங்கள் மட்டும், ஒரு குறிப்பிட்ட உள்ளீடு கீழே போகலாம்
நீங்கள் மிகச்சிறிய உள்ளீடு என்று விரும்புகிறேன்.
>> நான், சரியான வழி பிட்கள் இந்த மதிப்புகள் அனைத்து ஒதுக்கப்படும் என்று ஞாபகம் இல்லை
ஆனால் பிட்கள் ஒரு குறிப்பிட்ட எண்ணிக்கை, 1,2345 அர்ப்பணிக்கப்பட்டது
பிட்கள் மற்றொரு குறிப்பிட்ட எண்ணிக்கை, உள்ளீடு அர்ப்பணிக்கப்பட்டது
அது ஒரு குறிப்பிட்ட அளவு ஒரு உள்ளீடு பிரதிநிதித்துவம் மட்டுமே சாத்தியமாகும்.
[மாணவர்] மற்றும் ஒரு இரட்டை? ஒரு கூடுதல் நீண்ட மிதவை போல? >> சரி.
இப்போது நீங்கள் பதிலாக 4 பைட்டுகள் 8 பைட்டுகள் பயன்படுத்தும் தவிர ஒரு மிதவை அதே விஷயம்.
இப்போது நீங்கள், 9 இலக்கங்கள் அல்லது 10 இலக்கங்கள் பயன்படுத்த முடியும்
இந்த 300 பதிலாக 100 வரை செல்ல முடியும். >> [மாணவர்] சரி.
மற்றும் மிதவைகள் மேலும் 4 பைட்டுகள். >> ஆமாம்.
நன்றாக, மீண்டும், இது அநேகமாக, பொது அமலாக்க ஒட்டுமொத்த பொறுத்தது
ஆனால் மிதவைகள் 4 பைட்டுகள், இரட்டையர் 8 உள்ளன.
அவர்கள் இரட்டை மிதவைகள் அளவு ஏனெனில் இரட்டையர் இரட்டை அழைக்கப்படுகின்றன.
[மாணவர்] சரி. அங்கு இரட்டை இரட்டையர்? >> இல்லை.
நான் நினைக்கிறேன் - நீண்ட longs போலவே >> [மாணவர்]? >> சரி. நான் அப்படி நினைக்கவில்லை. ஆம்.
கடந்த ஆண்டு சோதனை இல் [மாணவர்] முக்கிய செயல்பாடு பற்றி ஒரு கேள்வி இருந்தது
உங்கள் திட்டத்தின் ஒரு பகுதியாக இருக்க வேண்டும் என்ற.
பதில் உங்கள் திட்டத்தின் ஒரு பகுதியாக இருக்க வேண்டும் என்று இருந்தது.
என்ன சூழ்நிலையில்? என்று நான் பார்த்தேன் என்ன.
[Bowden] இது போல் - >> [மாணவர்] என்ன நிலைமை?
நீங்கள் பிரச்சனை? >> [மாணவர்] ஆமாம், நான் நிச்சயமாக அதை கவனித்து கொள்ள முடியும்.
தொழில்நுட்ப ரீதியாக, இருக்க வேண்டும் இல்லை, ஆனால் அடிப்படையில் அது இருக்க போகிறது.
[மாணவர்] நான் வேறு ஒரு ஆண்டு ஒரு பார்த்தேன்.
அது சரி அல்லது தவறு இருந்தது: ஒரு செல்லுபடியாகும் - >> ஓ, ஒரு கேட்ச் கோப்பு.?
. [மாணவர்] ஏதாவதொன்று கேட்ச் கோப்பு வேண்டும் - [ஒரே நேரத்தில் பேசும் இரு - புரிந்து]
சரி. அதனால் தனி தான்.
>> ஒரு. கேட்ச் கோப்பை மட்டும் செயல்பாடுகளை கட்டுப்படுத்த வேண்டும்.
நீங்கள் ஒரு இயந்திர குறியீடு இந்த கோப்பு, பைனரி, என்ன, தொகுக்கக்கூடிய
இல்லாமல் இன்னும் இயங்கக்கூடிய இருப்பது.
ஒரு செல்லுபடியாகும் இயங்கக்கூடிய ஒரு முக்கிய செயல்பாடு இருக்க வேண்டும்.
நீங்கள் 100 1 கோப்பு செயல்பாடுகளை ஆனால் எந்த முக்கிய எழுதலாம்
பின்னர், பைனரி என்று கீழே தொகுக்க
நீங்கள் தான் முக்கிய என்று மற்றொரு கோப்பு எழுத ஆனால் இந்த செயல்பாடுகளை ஒரு கூட்டத்தை அழைப்பு
இங்கு இந்த பைனரி கோப்பு.
அதனால் நீங்கள் இயங்கக்கூடிய செய்யும் போது, அந்த தொடுப்பி என்ன சம்பந்தம் இல்லை
இந்த 2 பைனரி கோப்புகள் இயங்கக்கூடிய வகையில் சேர்க்கிறது.
ஒரு. கேட்ச் கோப்பு அனைத்து ஒரு முக்கிய செயல்பாடு வேண்டும்.
மற்றும் பெரிய குறியீடு தளங்கள் மீது நீங்கள். கேட்ச் கோப்புகள் மற்றும் 1 முக்கிய கோப்பு ஆயிரக்கணக்கான பார்க்கிறேன்.
மேலும் கேள்விகள்?
[மாணவர்] மற்றொரு கேள்வி இருந்தது.
அது ஒரு மொழி என்று. சரி அல்லது தவறு?
பதில் தவறு, அது கணகண வென்ற சப்தம் போல் அல்ல நான் ஏன் புரிந்து.
ஆனால் நாங்கள் அப்படி இல்லை என்றால் நீங்கள் என்ன கூறுவீர்கள்?
என்று தான் அடிப்படையில் - நான் அது அழைப்பு விடுத்துள்ளது சரியாக பார்க்க முடியும்.
ஆனால் அது வெறும் கட்டளைகளை இயக்குகிறது.
என்று.
நான் இந்த கவனித்து கொள்ளலாம். Yeah.
ஓ, அப்படியா. என்று கூட அப்படி.
இந்த தயாரிப்பு பயன்பாட்டு நோக்கம் தானாக தீர்மானிக்க கூறுகிறார்
ஒரு பெரிய திட்டத்தை துண்டுகளை மறுதொகுப்பு வேண்டும் இது
அவர்களை மீள்தொகுப்பானது கட்டளைகளை கொடுக்கவும்.
நீங்கள் முற்றிலும் பெரும் என்று கோப்புகளை உருவாக்க முடியும்.
செய்ய, நாம் முன்னர் சொன்னது போல், கோப்புகளை நேர முத்திரைகளையும் பார்க்க மற்றும்
நீங்கள் தனிப்பட்ட கோப்புகளை கீழே தொகுக்க முடியும், மற்றும் நீங்கள் தொடுப்பி பெற வரை அது இல்லை
அவர்கள் இயங்கக்கூடிய வகையில் ஒன்றாக இருக்கும்.
நீங்கள் 10 வெவ்வேறு கோப்புகள் மற்றும் நீங்கள், அவர்களை 1 மாற்றத்தை நீங்கள்
பிறகு என்ன செய்ய போகிறார் தான் மீள்தொகுப்பானது என்று 1 கோப்பு
பின்னர் ஒன்றாக எல்லாவற்றையும் மீண்டும் இணைக்கவும்.
ஆனால் அதை விட டம்பர் தான்.
இது முற்றிலும் அது செய்ய வேண்டும், என்ன என்று வரையறுக்க வரை நீங்கள் தான்.
இது முன்னிருப்பாக, இந்த முறை முத்திரை பொருள் அங்கீகரிக்க முடியும்
ஆனால் நீங்கள் எதையும் செய்ய ஒரு தயாரிப்பு கோப்பு எழுத முடியும்.
நீங்கள் எழுத முடியும் ஒரு கோப்பை உருவாக்க அதனால் நீங்கள் அதை குறுவட்டு மீது மற்றொரு அடைவு செய்ய தட்டச்சு போது.
நான் விரக்தி நான் பிசுப்பு எல்லாம் என் அப்ளையன்ஸ் உள்ளே ஏனெனில்
பின்னர் நான் மேக் இருந்து PDF பார்க்க.
>> அதனால் நான் கண்டுபிடிப்பானில் சென்று நான் போய் என்ன செய்ய முடியும், சர்வர் இணை,
நான் இணைக்க சர்வர் என் வீட்டு உபயோக மற்றும் நான் எம் திறக்க
அந்த LaTeX தொகுக்கப்பட்ட.
ஆனால் நான் விரக்தி கொண்டிருந்தேன் நான் எம் புதுப்பிக்க தேவையான ஒவ்வொரு முறை ஏனெனில்,
நான் அதை அணுக முடியும் என்று ஒரு குறிப்பிட்ட அடைவு நகலெடுத்து வேண்டும்
அது எரிச்சலூட்டும் இருந்தது.
அதனால் நான் அதை விஷயங்கள் உண்டு என்பதை வரையறுக்க வேண்டும், இது ஒரு தயாரிப்பு கோப்பு எழுதினார்.
நீங்கள் எப்படி இந்த PDF LaTeX உள்ளது.
மற்ற எந்த தயாரிப்பு கோப்பை போன்ற - அல்லது நான் நீங்கள் கோப்புகளை காணவில்லை நினைக்கிறேன்,
ஆனால் நாம், அப்ளையன்ஸ் தான் என்கிறார் ஒரு உலகளாவிய தயாரிப்பு கோப்பு இல்லை
நீங்கள் ஒரு சி கோப்பு ஒடுக்குவதற்கான இருந்தால், கணகண வென்ற சப்தம் பயன்படுத்த.
அதனால் இங்கே என் ஒப்பனைகளை கோப்பில் நான் என்ன சொல்ல வேண்டும் என்று,
இந்த கோப்பு நீங்கள் PDF LaTeX கொண்டு தொகுக்க வேண்டும் போகிறோம்.
அதனால் அது தொகுக்கப்பட்ட செய்து அந்த PDF LaTeX தான்.
செய்ய ஒடுக்குவதற்கான. அது நான் குறிப்பிட்ட வரிசையில் இந்த கட்டளைகளை இயக்கும்.
அது PDF LaTeX இயங்கும், அது, நான் அதை நகல் வேண்டும் அடைவு அதை நகலெடுக்கிறது
அது சிடி தான் அடைவு மற்றும் பிற விஷயங்களை இல்லை,
ஆனால் அது அனைத்து, ஒரு கோப்பு மாற்றங்களை அங்கீகரிக்க
இது மாற்றுகிறது என்றால், அது இயக்க வேண்டும் என்று கட்டளைகளை இயக்கும்
போது கோப்பு மாற்றங்கள். >> [மாணவர்] சரி.
நான் உலக ஒப்பனைகளை கோப்புகளை எனக்கு அதை பார்க்க வேண்டும் எங்கே என்று தெரியவில்லை.
மற்ற கேள்விகள்? கடந்த ஏதாவது வினாடி வினாக்கள்? எந்த சுட்டிக்காட்டி விஷயங்கள்?
போன்ற சுட்டிகள் மூலம் நுட்பமான விஷயங்கள் உள்ளன -
நான் ஒரு புதிர் கேள்வி கண்டுபிடிக்க முடியும் போவதில்லை -
ஆனால் நான் தான் இந்த மாதிரி போல்.
நான் சொல்வது உங்களுக்கு புரிகிறதா உறுதி எண்ணாக * x * y -
இந்த சரியாக இங்கே எதுவும் இல்லை, நான் நினைக்கிறேன்.
ஆனால் அப்படி * x * y, அந்த ஸ்டாக் இருக்கும் என்று 2 காரணிகள் ஆகும்.
நான் சொல்லும் போது x = malloc (sizeof (int)), x, இன்னும் ஸ்டாக் ஒரு மாறி உள்ளது
malloc குவியல் உள்ள சில தடுப்பு, நாம் குவியல் செய்ய x புள்ளி நேர்கிறது.
>> குவியல் என்று ஸ்டேக் புள்ளிகள் மீது ஏதாவது எனவே.
எப்போது நீங்கள் malloc எதையும், நீங்கள் தவிர்க்க முடியாமல் அது ஒரு சுட்டிக்காட்டி உள்ளே சேமித்து.
என்று சுட்டிக்காட்டி ஸ்டாக் உள்ளது எனவே, malloced தொகுதி குவியல் உள்ளது.
நிறைய பேர் குழப்பி எடுத்து சொல்ல எண்ணாக * x = malloc; x குவியல் உள்ளது.
X சுட்டி காட்டும் இல்லை குவியல் உள்ளது.
என்ன காரணத்திற்காக நீங்கள் x உலகளாவிய மாறி இருக்கும் வரையில் x தன்னை, ஸ்டாக் உள்ளது
இதில் அது நினைவகம் மற்றொரு பகுதியில் இருக்கும் நடக்கிறது.
தடம் எனவே, இந்த பெட்டி மற்றும் அம்புக்குறி வரைபடங்களை வினாடி வினா ஒரு அழகான பொதுவான.
இது வினாடி வினா 0 இல்லை என்றால் அல்லது, அதை வினாடி வினா 1 இருக்கும்.
நீங்கள், ஒடுக்குவதற்கான உள்ள வழிமுறைகளை இந்த அனைத்து தெரிய வேண்டும்
அந்த அடிப்படையில் கேள்விகளுக்கு பதிலளிக்க வேண்டியிருந்தது இருந்து. ஆம்.
[மாணவர்] நாம் அந்த வழிமுறைகளை மேல் போக முடியவில்லை - >> என்று.
படிகள் மற்றும் ஒடுக்குவதற்கான முன் நாம், preprocessing வேண்டும்
, ஒடுக்குவதற்கான ஒருங்கிணைப்பதில், மற்றும் இணைக்கும்.
Preprocessing. என்ன செய்ய?
இது எளிதான படி - நன்றாக, இல்லை போன்ற -
அது வெளிப்படையாக இருக்க வேண்டும் என்று அர்த்தம் இல்லை, ஆனால் இது எளிதான செயல் தான்.
உங்களுக்கு அது உங்களை செயல்படுத்த முடியும். Yeah.
[மாணவர்] என்ன நீங்கள் உங்கள் இந்த போன்றவை அடங்கும் எடுத்து நகலெடுக்கிறது பின்னர் மேலும் வரையறுக்கிறது.
இது, # அடங்கும் போன்ற விஷயங்களை பார்க்க மற்றும் # வரையறுக்க
மற்றும் அது நகல்கள் மற்றும் பசைகள் அந்த உண்மையில் என்ன.
அதனால் # cs50.h அடங்கும் என்று சொல்லும் போது, Preprocessor நகல் மற்றும் cs50.h ஒட்டுதல்
அந்த நிலைப்பாட்டின்.
நீங்கள் # 4 இருக்கும் x வரையறுத்து கூற போது, Preprocessor முழு திட்டத்தின் மூலம் செல்கிறது
மற்றும் 4 x அனைத்து நிகழ்வுகளையும் பதிலாக.
எனவே Preprocessor சரியான சி கோப்பு எடுத்து சரியான சி கோப்பு வெளியிடுகிறது
அங்கு விஷயங்களை நகல் மற்றும் ஒட்டப்படும்.
எனவே இப்போது ஒடுக்குவதற்கான. என்ன செய்ய?
[மாணவர்] இது சி இருந்து பைனரி செல்லும்.
>> [Bowden] இது பைனரி அனைத்து வழியில் செல்ல முடியாது.
[மாணவர்] இயந்திர குறியீட்டை பிறகு? >> இது இயந்திர குறியீடு அல்ல.
[மாணவர்] சட்டமன்ற? >> சட்டமன்ற.
இது சி குறியீடு வழியில் செல்லும் முன் சட்டமன்ற சென்று,
பெரும்பாலான மொழிகளில் இப்படி செய்வாள்.
எந்த உயர் மட்ட மொழி தேர்வு, மற்றும் நீங்கள் அதை தொகுக்க போகிறோம் என்றால்,
அது படிகளில் தொகுக்க இருப்பார்கள்.
முதலில் சி பைதான் தொகுக்க நடக்கிறது, அது, சட்டமன்றத்தில் சி தொகுக்க நடக்கிறது
பின்னர் சட்டமன்ற பைனரி மொழிபெயர்க்கப்பட்ட போகிறது.
எனவே ஒடுக்குவதற்கான சி இருந்து சட்டமன்றத்தில் கொண்டு போகிறது.
ஒடுக்குவதற்கான வார்த்தை பொதுவாக அதிக அளவில் இருந்து கொண்டு பொருள்
குறைந்த அளவில் நிரலாக்க மொழி.
இந்த ஒரு உயர் மட்ட மொழி தொடங்க அங்கு தொகுப்பு மட்டுமே படி
மற்றும் ஒரு குறைந்த அளவு மொழி முடிவடைய, மற்றும் படி ஒடுக்குவதற்கான என்று அதனால் தான்.
ஒடுக்குவதற்கான போது [மாணவர்], நீ # அடங்கும் செய்துவிட்டேன் என்று நாம் cs50.h.
தொகுப்பி மீள்தொகுப்பானது cs50.h அங்கு உள்ளன என்று செயல்பாடுகளை போல்,
மேலும், அதே என்று சட்டமன்ற குறியீடு மொழிபெயர்க்க
அல்லது முன் சட்டமன்ற இருந்தது என்று ஒன்று நகலெடுத்து ஒட்டவும்?
cs50.h அழகான மிகவும் சட்டமன்ற முடிவடைய வேண்டும்.
விழாவில் முன்மாதிரிகளை மற்றும் பொருட்கள் போன்ற பொருட்களை நீங்கள் கவனமாக இருக்க தான் உள்ளது.
அதை நீங்கள் செயல்பாடுகளை நினைத்தீர்கள் போன்ற தொகுப்பி விஷயங்களை பார்க்கலாம் என்று உறுதி
சரியான பதிலுக்கு வகைகள் மற்றும் சரியான வாதங்கள் மற்றும் காரியங்களுக்கு.
>> அதை ஒடுக்குவதற்கான தான் போது மிகவும் cs50.h பின்னர் கோப்பில் தொடங்குகிறது, மற்றும்
இது எல்லாம் சரியாக என்று வருகிறது என்று உறுதி செய்து பின்னர் அதை அடிப்படையாக தூர எறிந்து.
ஆனால் CS50 நூலகத்தில் வரையறுத்த செயல்பாடுகளை, cs50.h இருந்து தனி அவை
அந்த தனித்தனியாக தொகுக்கப்பட்ட முடியாது.
உண்மையில் இணைக்கும் படி கீழே வரும் என்று, நாம் இரண்டாவது அந்த கிடைக்கும்.
ஆனால் முதல், என்ன பூட்டு?
பைனரி [மாணவர்] சட்டமன்ற? >> சரி.
கூடியிருந்தனர்.
சட்டமன்ற அழகான மிகவும் பைனரி ஒரு தூய மொழிபெயர்ப்பு ஏனெனில் நாம் அதை ஒடுக்குவதற்கான அழைக்க கூடாது.
சட்டமன்ற இருந்து பைனரி செல்வதில் மிகவும் சிறிய தர்க்கம் உள்ளது.
அது ஒரு அட்டவணையில் வரை போல், ஓ, இந்த வழிமுறை இல்லை;
அந்த பைனரி 01110 ஒத்துள்ளது.
அதனால் கோப்புகளை என்று வெளியீடுகளை பொதுவாக கூடியிருந்தனர். ஓ கோப்புகள்.
மற்றும். ஓ கோப்புகள் நாம் சொல்வதை என்ன,
எப்படி ஒரு கோப்பு ஒரு முக்கிய செயல்பாடு வேண்டும்.
எந்த கோப்பு ஒரு செல்லுபடியாகும் சி கோப்பு வரை ஒரு. ஓ கோப்பு கீழே தொகுக்க முடியும்.
இது. ஓ கீழே தொகுக்க முடியும்.
இப்போது, இணைக்கும். உண்மையில் ஒரு கொத்து கொண்டு என்ன ஓ கோப்புகள் மற்றும் இயங்கக்கூடிய அவற்றை கொண்டு.
அதனால் என்ன இணைக்கும் இல்லை நீங்கள் ஒரு. ஓ கோப்பு CS50 நூலகம் என்று முடியும்.
அது ஒரு ஏற்கனவே தொகுக்கப்பட்ட பைனரி கோப்பு.
அதனால் நீங்கள் GetString அழைக்கும் உங்கள் கோப்பு, உங்கள் hello.c, தொகுத்தல் போது
hello.c, hello.o கீழே தொகுக்கப்பட்ட
hello.o பைனரி இப்போது.
, அதை GetString பயன்படுத்துகிறது, அது cs50.o வழியாக செல்ல வேண்டும்
மற்றும் தொடுப்பி சேர்ந்து அவர்களை smooshes இந்த கோப்பில் GetString நகலெடுக்கிறது
அது தேவை அனைத்து செயல்பாடுகள் உள்ளன என்று இயங்கக்கூடிய வெளியே வரும்.
எனவே cs50.o உண்மையில் ஒரு ஓ கோப்பு அல்ல, ஆனால் அது எந்த அடிப்படை வேறுபாடு உள்ளது என்று நெருங்கிய போதும்.
எனவே தான் இணைப்பு ஒன்றாக கோப்புகள் ஒரு கொத்து கொண்டு
தனித்தனியாக செயல்பட்டு அனைத்து கொண்டிருக்கும் நான் பயன்படுத்த வேண்டும்
உண்மையில் இயக்க என்று இயங்கக்கூடிய உருவாக்குகிறது.
>> மற்றும் அதனால் நாம் சொல்வதை கூட இல்லை
நீங்கள் 1000 முடியும் அங்கு. கேட்ச் கோப்புகள், நீங்கள் அவற்றை எல்லாம் தொகுக்க. ஓ கோப்புகள்,
அநேகமாக ஒரு செல்லும், நீங்கள் 1 மாற்ற. கேட்ச் கோப்பு.
நீங்கள் தான் 1. கேட்ச் கோப்பு பின்னர் வேறு இணைக்கவும் எல்லாம், மீள்தொகுப்பானது வேண்டும்
மீண்டும் ஒன்றாக எல்லாவற்றையும் இணைக்க.
[மாணவர்] நாம் lcs50 எழுத இணைக்கும் போது?
சரி, அப்படி lcs50. நீங்கள் அந்த நூலகத்தில் இணைக்கும் வேண்டும் என்று தொடுப்பி அந்த கொடி சமிக்ஞைகள்.
கேள்விகள்?
நாம் முதல் விரிவுரை அந்த 5 வினாடிகள் தவிர வேறு பைனரி மீது போயிருந்தாய்?
நான் அப்படி நினைக்கவில்லை.
நீ, நாம் சென்று விட்டேன் என்று பெரிய ஓஸ் அனைத்து தெரிய வேண்டும்
நாங்கள் உங்களுக்கு ஒரு செயல்பாடு கொடுத்தார் என்றால், நீங்கள், முடியும்
நீங்கள் கிட்டத்தட்ட, பெரிய ஓ என்று கூற முடியும். அல்லது நல்ல, பெரிய ஓ கடுமையாக உள்ளது.
நீங்கள் எல்லாம் அதே எண்ணை மீது தேடுகிறது சுழல்கள் ஒரு காக்கப்பட்ட பார்க்க நீங்கள்,
>> [மாணவர்] n ஸ்கொயர் - இண்ட் ஜே, ஜே <n; எண்ணாக நான் > அது சரி செய்யப்பட்டு n முனைகிறது.
நீங்கள் மூன்று காக்கப்பட்ட இருந்தால், அதை n cubed இருக்கிறது.
அதனால் தான் அந்த வகையான உடனடியாக சுட்டிக்காட்ட முடியும்.
நீங்கள் செருகும் வரிசையாக்கம் மற்றும் குமிழி வரிசையாக்கம் தெரியும் மற்றும் வகை மற்றும் அந்த அனைத்து ஒன்றிணைக்க வேண்டும்.
அவர்கள் அந்த n ஸ்கொயர் மற்றும் n log n மற்றும் அனைத்து ஏன் அதை புரிந்து கொள்ள எளிதாகவும்
நான் அடிப்படையில் நீங்கள் கொடுத்த அங்கு ஒரு வருடம் ஒரு புதிர் இருக்கிறது என்று காரணம்
குமிழி வரிசையாக்கம் செயல்படுத்துதல் மற்றும் "இந்த செயல்பாடு இயங்கும் நேரம் என்ன?", என்றார்
நீங்கள் குமிழி வரிசையாக்கம் அதை அங்கீகரிக்க ஏன் என்றால், நீங்கள் உடனடியாக n ஸ்கொயர் கூற முடியும்.
நீங்கள் அதை பார்க்க வேண்டும் ஆனால், நீங்கள் கூட அது குமிழி வரிசையாக்கம் உணர வேண்டிய அவசியம் இல்லை;
நீங்கள் தான் இந்த இந்த செய்து கூற முடியும். இந்த ஸ்கொயர் n.
[மாணவர்] நீங்கள் கொண்டு வர முடியும் எந்த கடுமையான எடுத்துக்காட்டுகள் இருக்கின்றன,
கண்டறிவதன் ஒரு ஒத்த கருத்து போல?
>> நான் உங்களுக்கு எந்த கடுமையான உதாரணங்கள் கொடுக்க வேண்டும் என்று நான் நினைக்கவில்லை.
குமிழி வரிசையாக்கம் தான், நாம் என்று பற்றிய போன்ற கடுமையான இல்லை
மேலும் நீண்ட நீங்கள் புரிந்து கொள்ள நீங்கள் வரிசை முழுவதும் தேடி என்று, என்று
அணியின் ஒவ்வொரு உறுப்பு க்கு, இது ஸ்கொயர் n என்று ஒன்று இருக்கும்.
நாம் இங்கேயே போன்ற பொதுவான கேள்விகள் உள்ளன - ஓ.
ஒரு நாள், டக் கூறினார், "நான் ஒரு வரிசை வரிசைப்படுத்த முடியும் என்று ஒரு நெறிமுறையை கண்டுபிடித்தனர்
"O (log n) நேரம்! உள்ள n எண்கள்"
நாம் எப்படி அது முடியாத காரியம் தெரியுமா?
[செவிக்கு புலப்படாமல் மாணவர் பதில்] >> சரி.
மிகவும் குறைந்தது, நீங்கள், அணியின் ஒவ்வொரு உறுப்பு தொட வேண்டும்
அது ஒரு வரிசை வரிசைப்படுத்த முடியாது -
எல்லாம் வரிசையாக்கம் செய்யப்படாத வகையில் இருந்தால், நீங்கள், வரிசை எல்லாம் தொட்டு போகிறாய்
அதை n, ஓ குறைவாக அதை செய்ய முடியாது.
[மாணவர்] நீங்கள் எங்களுக்கு n, ஓ அதை செய்ய முடியாது என்று உதாரணம் காட்டியது
நீங்கள் நினைவு நிறைய பயன்படுத்தினால். >> சரி.
மற்றும் that's - நான் that's மறக்க - அது மாதிரி எண்ணி?
ஹ்ம்ம். ஒரு முழு எண்ணிலான வரிசையாக்க படிமுறை தான்.
நான் கடந்த வாரம் நினைவில் இல்லை என்று இந்த சிறப்பு பெயர் தேடிக்கொண்டிருக்கிறேன்.
Yeah. இந்த n, பெரிய ஓ விஷயங்களை சாதிக்க முடியும் என்று பலவகையான வகைகள் உள்ளன.
நீ மட்டும் ஒரு குறிப்பிட்ட எண்ணிக்கையில் முழு வரை பயன்படுத்தலாம் போன்ற ஆனால் வரம்புகள் உள்ளன.
பிளஸ் நீங்கள் ஏதாவது that's வரிசைப்படுத்த முயற்சி என்றால் -
உங்கள் வரிசை 012, -12, 151, 4 மில்லியன், இருந்தால்
பின்னர் அந்த ஒற்றை உறுப்பு முற்றிலும் முழு வரிசையாக்க அழிக்க போகிறது.
>> கேள்விகள்?
[மாணவர்] நீங்கள் ஒரு சுழல்நிலை செயல்பாடு மற்றும் அது சுழல்நிலை அழைப்புகளை செய்தால்
மீண்டும் அறிக்கையில் உள்ள, என்று, வால் சுழல்நிலை தான்
அதனால் அந்த இயக்க போது நினைவக பயன்படுத்த முடியாது
ஒரு தீர்வு பங்கேற்பு அல்லது குறைந்தபட்சம் ஒப்பிடக்கூடிய நினைவக பயன்படுத்த வேண்டும்?
[Bowden] ஆமாம்.
அது சாத்தியம் சற்று மெதுவாக இருக்கும், ஆனால் உண்மையில். என்று
சுழல்நிலை வால் மிகவும் நல்லது.
ஸ்டாக் சட்டங்களை மீண்டும் திருமணம் செய்ய விரும்புவது, நாம் பிரதான வேண்டும் என்று
நாம் எண்ணாக பட்டியை (int x) அல்லது ஏதாவது.
இந்த ஒரு சரியான சுழல்நிலை விழா அல்ல, ஆனால் திரும்பி பார் (x - 1).
அதனால், இந்த குறைபாடுகளை கொண்டுள்ளது. நீங்கள் அடிப்படை வழக்குகள் மற்றும் பொருள் வேண்டும்.
ஆனால் இங்கே கருத்து, இந்த சுழல்நிலை வால் உள்ளது
இது அதன் ஸ்டாக் சட்டகமானது வரும் போது முக்கிய அழைப்புகள் பட்டியில் பொருள்.
இந்த ஸ்டேக் சட்டத்தில் உள்ள நினைவகம் ஒரு சிறிய தொகுதி இருக்கும் நடக்கிறது
அதன் வாதம் x ஒத்துள்ளது.
அதனால் நாம் முக்கிய பட்டியில் (100) அழைக்க நடக்கும் என்று;
எனவே x 100 அவுட் தொடங்க போகிறது.
தொகுப்பி இந்த, ஒரு வால் சுழல்நிலை செயல்பாடு என்று அடையாளம் என்றால்
பார், அதன் சுழல்நிலை அழைப்பு பட்டியில் வைக்கும் போது
அதற்கு பதிலாக ஸ்டாக் பெரும்பாலும் வளரும் வரைக்கும் எங்கே இது ஒரு புதிய ஸ்டாக் சட்டகமானது, செய்யும்,
இறுதியில் அதை குவியல் கொண்டு இயங்கும் பிறகு segfaults கிடைக்கும்
நினைவக மோதி தொடங்குகிறது ஏனெனில்.
>> அதற்கு பதிலாக தனது சொந்த ஸ்டாக் சட்டகமானது செய்யும் எனவே, இது, உணர முடியும்
வணக்கம், நான் உண்மையில், இந்த ஸ்டாக் சட்டகமானது திரும்பி வர வேண்டும் என்றும்
எனவே அதற்கு பதிலாக நான் 99 இந்த வாதம் பதிலாக பிறகு பட்டியில் அனைத்து தொடங்க வேண்டும்.
, - (1 x) மற்றும் அது மீண்டும் அதை செய்யும் மற்றும் அதை திரும்ப பட்டியில் அடையும்
அதற்கு பதிலாக புதிய ஸ்டாக் சட்டகமானது செய்து, அது 98 அதன் தற்போதைய வாதம் பதிலாக
பின்னர் பட்டையின் ஆரம்பத்தில் திரும்பி செல்ல.
அந்த நடவடிக்கைகள், ஸ்டாக் அந்த 1 மதிப்பு பதிலாக மற்றும் தொடக்கத்தில் மீண்டும் குதித்து,
அழகான திறமையான உள்ளன.
அதனால் தான் இந்த பங்கேற்பு இது ஒரு தனி செயல்பாடு அதே நினைவக பயன்பாடு ஆகும்
நீங்கள் மட்டும் 1 ஸ்டாக் சட்டகமானது பயன்படுத்தி, ஆனால் நீங்கள் downsides பாதிக்கப்பட்ட இருப்பதால்
செயல்பாடுகளை அழைக்க என்ற.
இது இந்த அமைப்பு செய்ய ஏனெனில் அழைப்பு செயல்பாடுகளை சற்றே விலை முடியும்
மற்றும் teardown மற்றும் அனைத்து இந்த பொருள்.
இந்த வால் மறுநிகழ்வு நல்லது.
[மாணவர்] ஏன் புதிய வழிமுறைகளை உருவாக்க முடியாது?
அதை உணர்ந்து, ஏனெனில் அது தேவையில்லை.
பார் அழைப்பை தான் சுழல்நிலை அழைப்பு திரும்பி வருகிறார்.
அதை திரும்ப மதிப்பு எதுவும் செய்ய தேவையில்லை.
அது உடனடியாக திரும்ப நடக்கிறது.
எனவே அது தனது சொந்த வாதம் பதிலாக மீண்டும் தொடங்க போகிறது.
மேலும், நீங்கள் வால் சுழல்நிலை பதிப்பு இல்லை என்றால்,
நீங்கள் இந்த பட்டியில் திரும்பும் போது அங்கு இந்த பார்கள் கிடைக்கும்
அதை பார் உடனடியாக கொடுக்கிறது என்று பிறகு, இந்த ஒரு அதன் மதிப்பு திரும்ப வேண்டும்
மற்றும் இது ஒரு அதன் மதிப்பு கொடுக்கிறது, அது வெறும் உடனடியாக திரும்ப நடக்கிறது
இந்த ஒரு அதன் மதிப்பு கொடுங்கள்.
எனவே நீங்கள் ஸ்டேக் இந்த விஷயங்கள் அனைத்து ஆஃப் உறுத்தும் இந்த சேமிப்பு
மீண்டும் மதிப்பு மட்டும் எப்படியோ அனைவரும் எழுந்து கடந்து போகிறது என்பதால்.
அதனால் தான் மேம்படுத்தப்பட்டது வாதம் நமது வாதம் பதிலாக மீண்டும் தொடங்க முடியாது?
- நீங்கள் அப்படி ஏதாவது இருந்தால், செயல்பாடு, வால் சுழல்நிலை இருந்தால்
[மாணவர்] என்றால் பார் (x + 1). >> சரி.
>> நீங்கள் நிலையில் அதை வைத்து அப்படி என்றால், நீங்கள் திரும்பி மதிப்பு ஏதோ செய்கிறோம்.
அல்லது நீங்கள் மீண்டும் 2 செய்வது கூட * பார் (x - 1).
எனவே இப்போது பார் - இது 2 மடங்கு மதிப்பு கணக்கிட வேண்டும் (x 1), வரிசையில் திரும்ப வேண்டும்
அதனால் இப்போது, அதன் சொந்த தனி ஸ்டாக் சட்டகமானது தேவை
இப்போது, நீங்கள் எவ்வளவு கடின முயற்சி இல்லை, நீங்கள் வேண்டும் போகிறோம் -
இந்த ரிகர்ஸிவ் வால் இல்லை.
[மாணவர்] நான் ஒரு வால் மறுநிகழ்வு ஒரு நோக்கம், ஒரு மறுநிகழ்வு கொண்டுவர முயற்சி என்று -
[Bowden] ஒரு இலட்சிய உலகில், ஆனால் CS50 நீங்கள் இல்லை.
வால் மறுநிகழ்வு பெறுவதற்காக, பொதுவாக, ஒரு கூடுதல் வாதம் அமைக்க
பார் y கொண்டு int x எடுக்கும் இடத்தில்
மற்றும் y நீங்கள் திரும்ப வேண்டும் இறுதி ஒன்று தொடர்புடையது.
(- 1 x), 2 * y மிகவும் பின் இந்த பட்டியில் திரும்பி போகிறாய்.
நான் தான் என்று ஒரு உயர் மட்ட நீங்கள் விஷயங்களை வால் சுழல்நிலை வேண்டும் மாற்றும் எப்படி.
ஆனால் கூடுதல் வாதம் -
பின்னர் இறுதியில் உங்கள் தளத்தை வழக்கு அடைய போது, நீங்கள் y திரும்ப
நீங்கள் முழு நேரம் நீங்கள் விரும்பும் திரும்பி மதிப்பு சேகரிக்க ஏனெனில்.
நீங்கள் வகையான செயலாற்றலாலோ செய்து ஆனால் சுழல்நிலை அழைப்புகளை பயன்படுத்தி வருகின்றனர்.
கேள்விகள்?
சரங்களை பயன்படுத்தும் போது போன்ற வேளை சுட்டிக்காட்டி கணித பற்றி [மாணவர்]. >> என்று.
சுட்டிக்காட்டி கணித.
சரங்களை எரிப்பதை நட்சத்திரங்கள் ஏனெனில் சரங்களை பயன்படுத்தும் போது அது எளிதில்
எழுத்துகள், எப்போதும் எப்போதும் ஒரு பைட் ஆகும்
அதனால் சுட்டிக்காட்டி கணித நீங்கள் சரங்களை கையாளும் போது வழக்கமான கூட்டல் ஆகும்.
நாம் மட்டும் எரிப்பதை * கள் = "ஹலோ" என்று.
நாம் நினைவகத்தில் ஒரு தொகுதி உள்ளது.
நீங்கள் எப்போதும் பூஜ்ய அழிப்பு வேண்டும், ஏனெனில் இது 6 பைட்டுகள் வேண்டும்.
மற்றும் கரி * கள் இந்த வரிசை தொடக்கத்தில் சுட்டி போகிறது.
எனவே கள் அங்கு சுட்டிக்காட்டியுள்ளது.
இப்போது, இந்த அடிப்படையில் எந்த வரிசை எவ்வாறு உள்ளது
பொருட்படுத்தாமல் அதை malloc அல்லது அதை ஸ்டேக்கில் என்று ஒரு திகழ்ந்தது என்பது.
எந்த அணி, அடிப்படையில் வரிசை தொடக்கத்தில் ஒரு சுட்டிக்காட்டி உள்ளது
பின்னர் எந்த அணி செயல்பாடு, எந்த குறியீட்டு எண், ஒரு குறிப்பிட்ட ஈடு என்று வரிசையாக செல்லும்.
>> அதனால் நான் கள் [3] போன்ற ஏதாவது சொல்லும் போது, இந்த கள் சென்று உள்ளே 3 எழுத்துகள் எண்ணி
எனவே கள் [3], நாம் 0 கொண்டு, 1, 2, 3, அதனால் கள் [3] இந்த எல் பார்க்கவும் போகிறது.
[மாணவர்] நாம் கள் + 3 செய்து பின்னர் அடைப்புக்குறிக்குள் நட்சத்திரம் அதே மதிப்பில் அடைய முடியும்?
ஆம்.
இந்த * (கள் + 3) ஆகும்;
என்று எப்போதும் எப்போதும் சமமான நீ என்ன பெரிய விஷயம் இல்லை.
நீங்கள் பிராக்கெட் வாக்கிய அமைப்பு பயன்படுத்த வேண்டும்.
நீங்கள் எப்போதும் (கள் + 3) தொடரியல் * பயன்படுத்தலாம்.
மக்கள் என்றாலும், பிராக்கெட் வாக்கிய அமைப்பு போன்ற முனைகின்றன.
[மாணவர்] எனவே அனைத்து வரிசைகள் தான் உண்மையில் குறிப்புகள் உள்ளன.
நான் சொல்லும் போது ஒரு சிறிய வேறுபாடு உள்ளது int x [4]; >> [மாணவர்] அந்த நினைவு உருவாக்க உள்ளதா?
[Bowden] அப்படி 16 பைட்டுகள் ஒட்டுமொத்த, அடுக்கு 4 ints உருவாக்க போகிறார்.
இது ஸ்டேக் 16 பைட்டுகள் உருவாக்க நடக்கிறது.
x எங்கு சேமிக்க முடியாது.
அது தான் தொடக்கத்தில் குறிப்பிடும் ஒரு குறியீடு உள்ளது.
நீங்கள், இந்த செயல்பாடு உள்ளே வரிசை அறிவித்தார் காரணம்
தொகுப்பி செய்ய என்ன தான் மாறி x அனைத்து நிகழ்வுகளையும் மாற்ற
இந்த 16 பைட்டுகள் வைத்து தேர்வு நடந்தது அங்கு என்று.
ஒரு உண்மையான சுட்டிக்காட்டி, ஏனெனில் அது எரிப்பதை * கள் மூலம் அதை செய்ய முடியாது.
அது மற்ற விஷயங்களை சுட்டிக்காட்ட இலவசம்.
x ஒரு நிலையாக இருக்கும். நீங்கள் வேறு ஒரு வரிசைக்கு இது புள்ளி முடியாது. >> [மாணவர்] சரி.
ஆனால் இந்த யோசனையை, இந்த குறியீட்டு எண், இது ஒரு வழக்கமான வரிசை என்று பொருட்படுத்தாமல் அதே தான்
இது ஏதோ அல்லது ஒரு சுட்டிக்காட்டி இருந்தால் அல்லது அது ஒரு malloced வரிசைக்கு ஒரு சுட்டிக்காட்டி இருக்கிறது.
உண்மையில், அது அதே விஷயம் அந்த அளவுக்கு சமமானதாகும்.
அது உண்மையில் ஒரு அடைப்புக்குறிக்குள் உள்ளே என்ன மொழிபெயர்கப்பட்டுள்ளது என்ன, அடைப்புக்குறிக்குள் இடது
அவர்கள் ஒன்றாக சேர்த்து, மற்றும் dereferences.
இந்த போலவே செல்லுபடியாகும் * (கள் + 3) அல்லது கள் [3].
[மாணவர்] நீங்கள் 2 பரிமாண அணிகளை குறிக்கும் குறிப்புகள் முடியுமா?
>> அது கடினமாக உள்ளது. பாரம்பரியமாக, இல்லை.
ஒரு 2 பரிமாண அணிகளில் சில வசதியான இலக்கணத்தை ஒரு 1 பரிமாண அணிகளில் இல்லை
ஏனெனில் நான் சொல்லும் போது int x [3] [3], இந்த உண்மையிலேயே 9 மதிப்புகள் வெறும் 1 வரிசை ஆகும்.
அதனால் நான் சுட்டு, ஒடுக்கி நான் என்ன தெரியும் போது.
நான் x [1] [2], அதை நான் இரண்டாவது வரிசையில் செல்ல வேண்டும் தெரியும், அது முதல் 3 தவிர்க்க நடக்கிறது, சொன்னால்
பின்னர், அது இந்த ஒரு பெற நடக்கிறது என்று இரண்டாவது விஷயம் விரும்புகிறார்.
ஆனால் அது இன்னும் ஒரு ஒற்றை பரிமாண அணிகளில் உள்ளது.
அதனால் நான், அந்த அணி ஒரு சுட்டிக்காட்டி ஒதுக்க வேண்டும் என்றால்
நான் கூறுவேன் எண்ணாக * ப = x;
x வகை தான் -
அது ஒரு சின்னம் என்பதால் அதை x முரட்டு என்று வகை மற்றும் அது ஒரு உண்மையான மாறி இல்லை
ஆனால் அது ஒரு முழு எண்ணாக * ஆகும்.
x இந்த தொடக்கத்தில் ஒரு சுட்டிக்காட்டி இருக்கிறது. >> [மாணவர்] சரி.
அதனால் நான் [1] [2] அணுக முடியாது.
நான், சிறப்பு இலக்கணத்தை ஒரு சுட்டிக்காட்டி அறிவித்தார் அங்கு நினைக்கிறேன்
int போல் வேடிக்கையாக (* ப [-. முற்றிலும் வேடிக்கையாக நான் கூட தெரியாது.
ஆனால் அடைப்புக்குறிக்குள் மற்றும் பொருட்களை போன்ற சுட்டிகள் அறிவித்தார் ஒரு இலக்கணத்தை உள்ளது.
இது கூட நீங்கள் அதை செய்ய விடுங்கள் இல்லை.
நான் உண்மையை சொல் என்று ஒன்று வந்து பார் என்று.
புள்ளி ஒரு இலக்கணத்தை இருந்தால் நான், பிறகு இருப்பேன். ஆனால் நீங்கள் அதை பார்க்க மாட்டேன்.
மேலும் இலக்கணத்தை நீங்கள் அதை பயன்படுத்தினால், மக்கள் குழப்பி வேண்டும் என்று தொன்மையான உள்ளது.
இது போன்ற பல பரிமாண அணிகளை அழகாக அரிது.
அழகான நீ -
நீங்கள் அணி விஷயங்களை செய்கிறீர்கள் என்றால், அது, அரிதான இருக்க போவதில்லை
ஆனால் சி நீங்கள் அரிதாக பலபரிமாண வரிசைகள் பயன்படுத்தி கொள்ள போகிறோம்.
Yeah. >> [மாணவர்] நாம் ஒரு மிகவும் நீண்ட வரிசை வேண்டும் என்று.
>> எனவே மெய்நிகர் நினைவக அது, அனைத்து தொடர்ச்சியான தோன்றும் என்று
ஒருவருக்கொருவர் உரிமை அடுத்த உறுப்புகள் போல்,
ஆனால் பருநிலை நினைவகம், இது பிரிந்து வேண்டும் என்று முடியும் என்று? >> ஆமாம்.
நினைவக வேலைகள் எப்படி மெய்நிகர் அது பிரிக்கிறது -
ஒதுக்கீடு யூனிட் 4 கிலோபைட்டுகளை இருக்கிறது இது ஒரு பக்கம்,, என்பது
எனவே ஒரு முறை சொன்னால், ஏய், நான், இந்த நினைவகத்தை பயன்படுத்த வேண்டும்
இயங்கு இது நினைவகம் என்று சிறிய தொகுதி 4 கிலோபைட்டுகளை ஒதுக்க வேண்டும்.
நீங்கள் நினைவகத்தை மட்டுமே முழு தொகுதி ஒரு சிறிய பைட், பயன்படுத்த கூட
இயங்கு அது முழு 4 கிலோபைட்டுகளை கொடுக்க போகிறார்.
இந்த வழி என்ன நான் செய்ய முடியும் - இது என் ஸ்டேக் என்று நாம்.
இந்த ஸ்டேக் பிரிக்கப்பட்ட. என் ஸ்டேக் மெகாபைட் மற்றும் மெகாபைட் இருக்க முடியும்.
என் ஸ்டேக் பெரும் முடியும்.
ஆனால் ஸ்டேக் தன்னை, தனிநபர் பக்கங்கள் பிரிந்தது வேண்டும்
இந்த எங்கள் ரேம் என்று நாம் இங்கு கவனிக்க இருந்தால் நாம்,
நான் ரேம் 2 ஜிகாபைட் இருந்தால், இந்த, என் ரேம் zeroth பைட் போன்ற உண்மையான முகவரியை 0
இந்த இங்கே 2 ஜிகாபைட் அனைத்து வழி கீழே உள்ளது.
இந்த பக்கம் இங்கு இந்த தொகுதி தொடர்புடைய கூடும்.
இந்த ஒரு இங்கு இந்த ஒரு ஒத்திருக்கும் கூடும்.
இயங்கு பருநிலை நினைவகம் ஒதுக்க இலவச இருக்கும்
தன்னிச்சையாக எந்த தனிப்பட்ட பக்கம்.
என்று அர்த்தம் என்று இந்த எல்லை வரிசை காலூன்றியிருக்கின்றன நடந்தால்,
ஒரு அணி, இந்த விட்டு நடந்தால் மற்றும் சரியான ஒரு பக்கம் இந்த உத்தரவை
பின்னர் அந்த வரிசையில் பருநிலை நினைவகம் பிரிந்தது போகிறது.
செயல்முறை முடியும் போது பிறகு, நிரல் வெளியேறும்போது,
இந்த ஒப்பீடு குறையலாம மற்றும் அது மற்ற விஷயங்களை இந்த சிறிய தொகுதிகள் பயன்படுத்த இலவசம்.
மேலும் கேள்விகள்?
[மாணவர்] சுட்டிக்காட்டி கணித. >> ஓ.
சரங்களை, எளிதாக இருந்தது, ஆனால் ints போன்ற ஏதாவது பார்க்க
எனவே மீண்டும் ஒரு எண்ணாக x [4];
இந்த வரிசை என்பதை அல்லது 4 முழுஎண்களின் ஒரு malloced வரிசைக்கு ஒரு சுட்டிக்காட்டி என்று,
அதே வழியில் சிகிச்சை நடக்கிறது.
எனவே வரிசைகள் குவியல் மீது [மாணவர்] இருக்கும்?
[Bowden] வரிசைகள் குவியல் மீது இல்லை. >> [மாணவர்] ஓ.
>> [Bowden] வரிசைக்கு இந்த வகை ஸ்டேக்கில் இருக்கிறது
தவிர, நீங்கள் அதை அறிவித்தார் - உலக மாறிகள் புறக்கணிக்கும். உலக மாறிகள் பயன்படுத்த வேண்டாம்.
நான் என்ன ஒரு செயல்பாடு உள்ளே int x [4];
இந்த வரிசை அடுக்கிற்கு ஒரு 4 முழு தொகுதி உருவாக்க நடக்கிறது.
ஆனால் இந்த malloc (4 * sizeof (int)); குவியல் போக போகிறது.
ஆனால் இந்த புள்ளி பிறகு நான், அழகான அதே வழிகளில் x மற்றும் ப பயன்படுத்தலாம்
நீங்கள் ப reassign முடியாது பற்றி முன்பு நான் விதிவிலக்குகள் தவிர.
தொழில்நுட்ப, அவற்றின் அளவுகள் ஓரளவு மாறுபட்டதாக இருக்கும், ஆனால் அந்த முற்றிலும் பொருத்தமற்ற தான்.
நீங்கள் உண்மையில் தங்கள் அளவுகள் பயன்படுத்த முடியாது.
நான் சொல்ல முடியும் ப ப [3] = 2; அல்லது x [3] = 2;
நீங்கள் சரியாக அதே வழிகளில் அவற்றை பயன்படுத்த முடியும்.
இப்போது மிகவும் சுட்டிக்காட்டி கணித - ஆம்.
[மாணவர்] நீங்கள் அடைப்புக்குறிக்குள் இருந்தால் ப * செய்ய இல்லையா?
அடைப்புக்குறிக்குள் ஒரு உள்ளார்ந்த dereference இருக்கும். சரி >>.
உண்மையில், இது என்ன நீ சொல்கிறாய் நீ பலபரிமாண வரிசைகள் பெற முடியும்
சுட்டிகள் மூலம், நீங்கள் என்ன செய்ய முடியும் என்ற சொல்கிறேன், ஏதோ போல், முழு எண்ணாக ** பக் = malloc (sizeof (int *) * 5);
நான் அதை ஆல் அவுட் முதல் எழுத வேண்டும்.
நான் ஒரு விரும்பவில்லை.
சரி.
நான் இங்கே என்ன இருக்கிறது - அந்த பக் [நான்] இருக்க வேண்டும்.
எனவே பக் ஒரு சுட்டிக்காட்டி ஒரு சுட்டிக்காட்டி இருக்கிறது.
நீங்கள் 5 எண்ணாக நட்சத்திரங்கள் வரிசை சுட்டிக்காட்ட பக் mallocing.
எனவே நினைவகத்தில் நீங்கள் ஸ்டேக் பக் உள்ள
இது அனைத்து சுட்டிகளையும் தங்களை இது 5 தொகுதிகளின் வரிசை சுட்டிக்காட்ட நடக்கிறது.
பின்னர் போது இங்கே நான் malloc கீழே, நான் malloc அந்த தனிப்பட்ட சுட்டிகள் ஒவ்வொரு
குவியல் மீது 4 பைட்டுகள் ஒரு தனி தொகுதி சுட்டி வேண்டும்.
4 பைட்டுகள் மிகவும் இந்த புள்ளிகள்.
மற்றும் வேறு 4 பைட்டுகள் இந்த ஒரு புள்ளிகள்.
>> அவர்கள் அனைவரும் தங்கள் சொந்த 4 பைட்டுகள் சுட்டி.
இந்த என்னை பல்பரிமாணம் செய்யும் ஒரு வழி தருகிறது.
நான் பக் [3] [4], ஆனால் இப்போது அதே விஷயம் அல்ல என பல பரிமாண அணிகளை சொல்ல முடியும்
பலபரிமாண வரிசைகள் அது மொழிபெயர்க்கப்பட்டு ஏனெனில் [3] [4] x வரிசை நோக்கி செல்கையில் ஒரு வகையில்.
இந்த dereferences, ப dereferences பின்னர், மூன்றாவது குறியீட்டு அணுகும்
மற்றும் அணுகல்கள் - 4 தவறானது என்று - இரண்டாவது குறியீட்டு.
அதேசமயம் நாம் போது int x [3] [4] ஒரு பரிமாண வரிசை போல் முன்
நீங்கள் அடைப்புக்குறி இரட்டை போது, உண்மையில் ஒரே ஒரு dereference தான்
, நீங்கள் ஒரு சுட்டியை தொடர்ந்து பின்னர் ஒரு ஆஃப்செட்
இந்த உண்மையில் 2D குறிப்புகள் இல்லை.
நீங்கள் 2 தனித்தனி சுட்டிகள் பின்பற்ற.
இந்த தொழில்நுட்ப அனுமதிக்கிறது நீ பலபரிமாண வரிசைகள் வேண்டும்
ஒவ்வொரு வரிசை வெவ்வேறு அளவுகளில் எங்கே.
அதனால் நான் துண்டிக்கப்பட்ட பலபரிமாண வரிசைகள் இது என்று என்ன இருக்கிறது என்று நான் நினைக்கிறேன்
உண்மையில் முதலில் 10 உறுப்புகள் என்று ஒன்று சுட்டி முடியும் என்பதால்,
இரண்டாவது விஷயம் 100 கூறுகள் என்று ஒன்று சுட்டி முடியும்.
[மாணவர்] நீங்கள் முடியும் சுட்டிகள் எண்ணிக்கை எந்த அளவு இருக்கிறதா
மற்ற சுட்டிகள் சுட்டி காட்டியது? >> இல்லை
நீங்கள் முழு எண்ணாக ***** ப முடியும்.
மீண்டும் சுட்டிக்காட்டி கணித வேண்டும் - >> [மாணவர்] ஓ. >> சரி.
[மாணவர்] நான் எண்ணாக *** ப வேண்டும் என்றால், நான் ஒரு dereferencing செய்ய நான் ப * இந்த மதிப்பு சமமாக இருக்கும் என்று,
அது மட்டும் dereferencing 1 நிலை என்ன செய்ய போகிறாய்? >> ஆமாம்.
- நான் கடந்த சுட்டிக்காட்டி உள்ள சுட்டி என்று தான் அணுக வேண்டும் என்றால்
நீங்கள் *** ப செய்ய. சரி >>.
எனவே இந்த 1 தொகுதி, மற்றொரு தொகுதி புள்ளிகளை, மற்றொரு தொகுதிக்கு புள்ளிகள் ப புள்ளிகள் ஆகும்.
நீங்கள் * செய்தால் பின்னர் p = வேறு, நீங்கள் இந்த மாற்றம்
இப்போது வேறு ஒரு தொகுதி சுட்டிக்காட்ட. சரி >>.
>> இந்த malloced இருந்தால் [Bowden] மேலும், நீங்கள் இப்போது நினைவகம் கசியவிடப்பட்ட
இந்த பல்வேறு குறிப்புகள் வேண்டும் நடக்கும் வரை
நீங்கள் மட்டும் விட்டு துரத்தினார் அந்த நபரை மீண்டும் பெற முடியாது என்பதால்.
சுட்டிக்காட்டி கணித.
int x [4]; 4 முழுஎண்களின் வரிசை ஒதுக்க போகிறது
x அணி தொடக்கத்தில் சுட்டி சென்று அமைந்துள்ள.
அதனால் நான் x [1] போன்ற ஏதோ சொல்ல, நான் வரிசையில் இரண்டாவது முழு சென்று என்ன வேண்டும்,
இந்த ஒரு வேண்டும்.
இந்த முழு எண் 4 பைட்டுகள் எடுத்து முதல் ஆனால் உண்மையில், அந்த அணி மீது 4 பைட்டுகள் தான்.
1 ஆஃப்செட் ஒரு உண்மையில் ஒரு 1 ஆஃப்செட் அப்படியென்றால்
வரிசை வகை என்ன காலங்களில் அளவு.
இந்த முழு அணிவரிசை, எனவே அதை ஈடு செய்ய இது int 1 முறை அளவு தெரியும்.
மற்ற தொடரியல். இந்த * (x + 1) ஆகும் என்பதை நினைவில்;
நான் சுட்டிக்காட்டி என்ன என்று மீண்டும் சுட்டிக்காட்டி சேமித்து என்று முகவரி: 1, என்று சொல்லும் போது
பிளஸ் 1 முறை சுட்டிக்காட்டி வகை அளவு.
நீங்கள் x = ox100, பின்னர் x + 1 = ox104.
இந்த துஷ்பிரயோகம் மற்றும் சொல்லலாம் எரிப்பதை போன்ற * கேட்ச் = (எரிப்பதை *) x;
இப்போது கேட்ச் x அதே முகவரியை போகிறது.
கேட்ச், ox100 சமமாக இருக்கும்
ஆனால் கேட்ச் + 1 ox101 சமமாக இருக்கும்
சுட்டிக்காட்டி கணித நீங்கள் சேர்க்கும் என்று சுட்டிக்காட்டி வகையை சார்ந்தது என்பதால்.
எனவே கேட்ச் + 1, அதை கேட்ச் பார்க்க, அது ஒரு எரிப்பதை சுட்டிக்காட்டி, அதனால், கரி 1 முறை அளவு சேர்க்க நடக்கிறது
, இது எப்போதும் 1 போகிறது, அதனால் நீங்கள் 101 கிடைக்கும்
நான் இன்னும் கூட 100 என்பது x, செய்தால், x + 1 104 போகிறது அதேசமயம்.
[மாணவர்] நீங்கள் கேட்ச் + 1 உங்கள் சுட்டிக்காட்டி முன்னெடுத்து பொருட்டு பயன்படுத்த முடியுமா?
ஆமாம், நீங்கள்.
X ஒரு சின்னமாக இருப்பதால் நீங்கள் x உடன் அதை செய்ய முடியாது, அது ஒரு நிலையான; நீ x மாற்ற முடியாது.
>> ஆனால் கேட்ச் ஒரு சுட்டிக்காட்டி இருக்கும் நடக்கும், எனவே சி + + செய்தபின் கச்சிதமாக இது 1 அதிகப்படுத்த வேண்டும்.
கேட்ச் ஒரு எண்ணாக * இருந்தால், பிறகு கேட்ச் + 104 வேண்டும்.
+ இல்லை சுட்டிக்காட்டி கணித போல் கேட்ச் + 1 சுட்டிக்காட்டி கணித செய்ய வேண்டும் வேண்டும்.
இந்த உண்மையில் ஒன்றிணைப்பு வகையான போன்ற விஷயங்கள் எப்படி நிறைய இருக்கிறது -
அதற்கு பதிலாக விஷயங்கள் பிரதிகளை உருவாக்கும், நீங்கள் பதிலாக செல்லலாம் -
இந்த சில அழிக்க நாம் - நான் வரிசைக்கு இந்த அரை கடக்க வேண்டும் என்றால் பிடிக்கும்.
நாம் நான் ஒரு விழாவில் இந்த வரிசையில் இந்த பக்கத்தில் கடக்க வேண்டும் என்று.
நான் அந்த விழாவிற்கு செல்ல வேண்டும்?
நான் x கடந்து இருந்தால், நான் இந்த முகவரிக்கு செல்லும்.
ஆனால் நான் இந்த குறிப்பிட்ட முகவரியை அனுப்ப வேண்டும். அதனால் நான் என்ன கடக்க வேண்டும்?
[மாணவர்] சுட்டி + 2?
[Bowden] அதனால் x + 2. ஆம்.
இந்த முகவரியை இருக்க போகிறது.
நீங்கள் மிகவும் அடிக்கடி அதை பார்க்க வேண்டும் x [2] பின்னர் அந்த முகவரி.
எனவே நீங்கள் அடைப்புக்குறி ஒரு உள்ளார்ந்த dereference ஏனெனில் அது முகவரியை எடுக்க வேண்டும்.
x [2], இந்த பெட்டியில் என்று மதிப்பு குறிக்கிறது, மற்றும் நீங்கள் அந்த பெட்டியை முகவரி வேண்டும்
அதனால் நீங்கள் என்ன சொன்னாலும் & x [2].
அதனால் நீங்கள் ஏதாவது அரை பட்டியலை அனுப்ப விரும்பினால் அங்கு ஒன்றிணைப்பு வகையான எப்படி இருக்கும்
நீங்கள் உண்மையில் நான் கடந்து & x [2], மற்றும் இப்போது இதுவரை சுழல் அழைப்பு விஷயத்தில்,
என் புதிய வரிசை அங்கு தொடங்குகிறது.
கடைசி நிமிடத்தில் கேள்விகள்.
[மாணவர்] நாம் ஒரு ampersand வைத்து அல்லது ஒரு எனில் - அந்த பெயரென்ன? >> ஸ்டார்?
[மாணவர்] ஸ்டார். >> தொழில்நுட்ப ரீதியாக, dereference ஆபரேட்டர், ஆனால் - >> [மாணவர்] Dereference.
>> நாம் ஒரு நட்சத்திரம் அல்லது ஒரு ampersand வைத்து என்றால் நான் y சொன்னால், என்ன நடக்கும் = x மற்றும் x ஒரு சுட்டிக்காட்டி இருக்கிறது?
Y வகை என்ன? >> [மாணவர்] நான் அதை சுட்டிக்காட்டி 2 சொல்கிறேன்.
நீங்கள் தான் சொல்ல நீங்கள் y = x, இப்போது x மற்றும் y புள்ளி அதே விஷயம். >> அதையே செய்ய [மாணவர்] பாயிண்ட்.
மற்றும் x ஒரு முழு எண்ணாக சுட்டிக்காட்டி இருந்தால்? நீங்கள் சுட்டிகள் ஒதுக்க முடியாது, ஏனெனில் >> அது புகார் கூறினார்.
[மாணவர்] சரி.
நாம் அம்புகள் அவற்றை வரைந்து கூட, அந்த சுட்டிகள் நினைவில்,
உண்மையில் அனைத்து அவர்கள் கடை - எண்ணாக * x - உண்மையில் அனைத்து x சேகரிக்கிறது என்பதை, ox100 போல் உள்ளது
நாம் 100 சேமிக்கப்படும் தொகுதி சுட்டிக்காட்டுவது போன்ற பிரதிநிதித்துவப்படுத்துவதாக நடக்கும்.
அதனால் நான் சொல்ல போது எண்ணாக * y = x; நான் y கொண்டு ox100 நகல் நான்,
இதில் நாம் தான் மேலும் ox100 சுட்டும், y என பிரதிநிதித்துவம் போகிறோம்.
நான் சொன்னால் எண்ணாக நான் = (int) x; பிறகு நான் ox100 மதிப்பு என்ன சேமிக்க நடக்கிறது
அது உள்ளே, ஆனால் இப்போது அதற்கு பதிலாக ஒரு சுட்டிக்காட்டி ஒரு முழு பொருள் கொள்ளுமாறு நடக்கிறது.
ஆனால் நீங்கள் நடிக்க வேண்டும் அல்லது வேறு அதை புகார்.
[மாணவர்] எனவே நீங்கள் நடிக்க வேண்டும் என்று -
அதை y இன் x அல்லது நடிப்பதற்கு எண்ணாக கொண்ட எண்ணாக வார்ப்பு போகிறது?
[Bowden] என்ன?
[மாணவர்] சரி. இந்த அடைப்புக்குறிக்குள் பின்னர் அங்கு ஒரு x அல்லது அங்கு ay போகிறது?
>> [Bowden] ஒன்று. x மற்றும் y சமமானதாக இருக்கும். >> [மாணவர்] சரி.
அவர்கள் இருவரும் சுட்டிகள் இருப்பதால். >> சரி.
[மாணவர்] அது முழு வடிவம் அறுபதின்ம 100 சேமிக்க முடியும்? >> [Bowden] சரி.
ஆனால் அது சுட்டிக்காட்டியுள்ளது என்ன மதிப்பு.
[Bowden] சரி. >> [மாணவர்] எனவே முழு வடிவம் தான் முகவரி. சரி.
நீங்கள் சில வினோதமான காரணம் விரும்பினார், [Bowden] இருந்தால்
நீங்கள் பிரத்யேகமாக சுட்டிகள் சமாளிக்க மற்றும் முழு சமாளிக்க முடியாது
மற்றும் எண்ணாக * x = 0 போன்ற.
நீங்கள் சுட்டிக்காட்டி கணித நடந்து தொடங்குகிறது முறை மிகவும் குழப்பி கொள்ள போகிறோம்.
எனவே அவர்கள் சேமித்து அந்த எண்கள் பொருளற்றது ஆகும்.
அதை நீங்கள் இன்னும் புரிந்து இறுதியில் மட்டும் எப்படி.
நான், ஒரு முழு எண்ணாக ஒரு முழு எண்ணாக * இருந்து ox100 நகலெடுக்க இலவச இருக்கிறேன்
ஒருவேளை நடிப்பு என்று கத்தினாள் போகிறது you're - நான் ஒதுக்க இலவச இருக்கிறேன் -
நான் இந்த தன்னிச்சையான எண்ணாக * என்ற (int *) ox1234 போல் ஒதுக்க இலவச இருக்கிறேன்.
எனவே ox123 செல்லுபடியாகும் ஒரு நினைவக முகவரி மற்றும் y ஆனது போல் இருக்கிறது.
& Y அழகான மிகவும் ox123 என்று ஏதாவது திரும்ப நடக்கும்.
[மாணவர்] அந்த அறுபதின்ம இருந்து தசம வடிவத்தில் செல்ல ஒரு உண்மையிலேயே வழி இருக்க வேண்டும்,
நீங்கள் ஒரு சுட்டிக்காட்டி இருந்தால் இப்படி நீங்கள் ஒரு முழு எண்ணாக அதை நடித்தார்?
[Bowden] நீங்கள் உண்மையில் ஒரு printf போன்ற பயன்படுத்தி அச்சிட முடியாது.
நாம் நான் எண்ணாக y = 100 வேண்டும் என்று.
எனவே printf (% d \ n - உங்களுக்கு ஏற்கனவே தெரியும் என்றும் - அச்சிட என்று ஒரு முழு எண்,% x.
நாம் அதை அறுபதின்ம என்று அச்சிட வேண்டும்.
எனவே ஒரு சுட்டிக்காட்டி, அறுபதின்ம சேமிக்கப்படுகிறது
மற்றும் ஒரு முழு தசம சேமிக்கப்படுகிறது.
எல்லாம் பைனரி சேமிக்கப்படுகிறது.
அதை நாம் அறுபதின்ம போன்ற சுட்டிகள் காட்ட முனைகின்றன என்று மட்டும் தான்
நாம், இந்த 4 பைட் தொகுதிகள் நினைக்க காரணம்
மற்றும் நினைவக முகவரிகள் நன்கு இருக்கும்.
இது BF தொடங்குகிறது என்றால், அது ஸ்டேக் இருக்க என்ன, இப்படி நாங்கள்.
அதனால் தான் அறுபதின்ம போன்ற சுட்டிகள் எங்கள் விளக்கம் தான்.
சரி. எந்த கடைசியாக கேள்விகள்?
>> நீங்கள் வேறு ஏதாவது இருந்தால் பிறகு நான் ஒரு பிட் இங்கே இருப்பார்கள்.
மற்றும் அந்த முடிவில் தான்.
>> [மாணவர்] ஆஹா! [கரவொலி]
>> [CS50.TV]