[Powered by Google Translate] [విభాగం 4 - అత్యంత సౌకర్యవంతమైన]
[రాబ్ బౌడెన్ - హార్వర్డ్ యూనివర్శిటీ]
[ఈ CS50 ఉంది. - CS50.TV]
మీరు అబ్బాయిలు ఆ తెలియదు సందర్భంలో మేము ఒక క్విజ్ రేపు ఉన్నాయి.
మీరు క్లాస్ లో చూసిన ఉండవచ్చు లేదా తరగతి చూడవచ్చు వుండాలి అన్నింటికీ ప్రధానంగా ఉంది.
వారు చాలా ఇటీవల విషయం ఉన్నప్పటికీ, గమనికలు ఉన్నాయి.
మీరు కనీసం వాటిని అధిక స్థాయిలో అర్థం చేసుకోవాలి.
మీరు క్విజ్ అర్థం ఉండాలి తరగతి లో చనిపోయాడన్న విషయం ఏదైనా.
మీరు వాటిని ప్రశ్నలు ఉంటే, మీకు వాటిని ఇప్పుడు అడగవచ్చు.
మీరు అబ్బాయిలు ప్రశ్నలు అడగండి ఇలా, ఒక విద్యార్థి నేతృత్వంలోని చాలా సెషన్ అని అన్నారు
కాబట్టి ఆశాజనక ప్రజలు ప్రశ్నలు.
ఎవరైనా ప్రశ్నలు ఉందా?
అవును. >> [విద్యార్థి] మీరు గమనికలు విషయంలో వెళ్ళే?
నేను గమనికలు వెళ్ళి చేస్తాము.
మీ వేరియబుల్స్ యొక్క అన్ని తప్పనిసరిగా మెమరీ నివసిస్తున్నారు
కానీ సాధారణంగా దాని గురించి ఆందోళన చెందకండి మరియు మీరు x + 2 మరియు y + 3 సే
మరియు కంపైలర్ విషయాలు మీరు నివసిస్తున్న ఇక్కడ గుర్తించడానికి చేస్తుంది.
మీరు ఇప్పుడు మీరు స్పష్టంగా ఆ మెమరీ చిరునామాలను ఉపయోగించే, గమనికలు వ్యవహరించే చేస్తున్నారు.
కాబట్టి ఒక వేరియబుల్ మాత్రమే ఎప్పుడూ ఏ సమయంలో ఒకే చిరునామా వద్ద నివసిస్తున్నారు కనిపిస్తుంది.
మేము ఒక పాయింటర్ డిక్లేర్ చెయ్యడానికి, ఏ రకం లాగా ఉండబోతుంది?
>> నేను ఒక పాయింటర్ p ప్రకటించాలని కావలసిన. ఏ రకం లాగా లేదు?
[విద్యార్థి] Int * p. >> అవును. కాబట్టి Int * p.
మరియు నేను దానిని ఎలా x సూచించడానికి సంపాదిస్తారు? >> [విద్యార్థి] ఎమ్పారసన్డ్.
[బౌడెన్] కాబట్టి ఆంపర్సండ్ చిహ్నం అక్షరాలా ఆపరేటర్లు చిరునామా అని పిలుస్తారు.
కాబట్టి నేను & చేసినప్పుడు x అది చరరాశి X యొక్క మెమరీ చిరునామా సంతరించుకోనుంది.
కాబట్టి ఇప్పుడు నేను పాయింటర్ p కలిగి, ఎక్కడైనా నా కోడ్ లో నేను * p ఉపయోగించవచ్చు
లేదా నేను x ఉపయోగించవచ్చు మరియు ఇది ఖచ్చితమైన విషయం ఉంటుంది.
(* P). ఈ ఏమి ఉంది? ఆ స్టార్ శతకము
[విద్యార్థి] ఇది ఆ సమయంలో ఒక విలువ అర్థం. >> అవును.
మేము దాన్ని చూస్తే కనుక, డయాగ్రమ్స్ అవుట్ డ్రా చాలా ఉపయోగపడుతుంది
ఈ విలువ 4 ఉంటాయి, ఇది x కోసం మెమరీ చిన్న పెట్టెలో, ఇక్కడ
అప్పుడు మేము, p కోసం మెమరీ కొద్దిగా బాక్స్
అందువలన x కు p పాయింట్లు, కాబట్టి మేము p నుండి x ఒక బాణం డ్రా.
కాబట్టి మేము చెప్పినప్పుడు మీరు * p మేము p అని బాక్స్ వెళ్ళండి చెబుతున్న దాన్ని.
స్టార్ బాణం అనుసరించండి మరియు మీరు అక్కడే ఆ బాక్స్ తో అనుకుంటున్నారు ఏ.
నేను * p = 7 చెప్పగలదు మరియు ఆ x మరియు 7 మార్పు అని బాక్స్ వెళతారు.
లేదా నేను కాలేదు Int z = * p * 2; కంగారు అదే ఇది యొక్క నక్షత్రం, నక్షత్రం ఎందుకంటే.
ఒక స్టార్ p dereferencing ఉంది, ఇతర స్టార్ 2 గుణించడం ఉంది.
నేను అలాగే x తో * p భర్తీ కాలేదు గమనించండి.
మీరు ఇదే విధంగా వాటిని ఉపయోగించవచ్చు.
తర్వాత నేను పూర్తిగా కొత్త విషయాల p పాయింట్ కలిగి ఉంటాయి.
నేను చెప్పగలను p = &z;
కాబట్టి ఇప్పుడు x ఇకపై పాయింట్లు P ఇది z సూచిస్తుంది.
నేను * p చేసే ఏ సమయంలో అది z చేయడం వంటి సేమ్.
మేము విధులు వెళ్ళడం ప్రారంభించిన తర్వాత ఈ ఉపయోగకరమైన విషయం.
>> ఇది ఏదో ఆ పాయింట్లు పాయింటర్ ప్రకటించాలని పనికిరాని రకంగా
మరియు తర్వాత మీరు దాన్ని dereferencing చేస్తున్నారు
మీరు ప్రారంభించడానికి అసలు వేరియబుల్ ఉపయోగించారు లేనప్పటికీ.
కానీ మీరు విధులు లోకి వచ్చినప్పుడు - కాబట్టి, మేము యొక్క కొన్ని ఫంక్షన్, Int foo కలిగి అని పిలవబడు
ఒక పాయింటర్ తీసుకుని కేవలం * p = 6 చేస్తుంది;
మేము స్వాప్ తో ముందు చూసిన వలె, మీరు సమర్థవంతమైన swap మరియు ఒక ప్రత్యేక చర్య చేయలేను
సి లో ప్రతిదీ ఎల్లప్పుడూ విలువ ద్వారా ప్రయాణిస్తున్న ఎందుకంటే కేవలం పూర్ణ ప్రసరించటం ద్వారా.
మీరు గమనికలు ప్రయాణిస్తున్న ఉన్నప్పటికీ మీరు విలువ ద్వారా ప్రయాణిస్తున్న చేస్తున్నారు.
ఇది కేవలం కాబట్టి ఆ విలువలు మెమరీ చిరునామాలు ఇలా జరిగింది.
అప్పుడు నేను foo (p); నేను ఫంక్షన్ foo లోకి పాయింటర్ ప్రయాణిస్తున్న నేను
ఆపై foo * p = 6 చేస్తున్న;
లోపల ఆ ఫంక్షన్ యొక్క కాబట్టి, * p, ఇప్పటికీ x సమానం
ఆ ఫంక్షన్ లో దర్శిని గల కాదు ఎందుకంటే కాని నేను ఆ ఫంక్షన్ యొక్క లోపల x ఉపయోగించలేరు.
కాబట్టి * p = 6 నేను మరొక ఫంక్షన్ స్థానిక వేరియబుల్ యాక్సెస్ చేయవచ్చు మాత్రమే మార్గం.
లేదా, బాగా, గమనికలు నేను మరొక ఫంక్షన్ స్థానిక వేరియబుల్ యాక్సెస్ చేయవచ్చు మాత్రమే మార్గం.
[విద్యార్థి] మీరు ఒక పాయింటర్ తిరిగి కోరారు చెప్పారు. మీరు ఎలా సరిగ్గా ఆ చేయాలి?
[బౌడెన్] Int y = 3 లో లాగ ఒక పాయింటర్ చూపించు; తిరిగి & పీ? >> [విద్యార్థి] అవును.
[బౌడెన్] సరే. మీరు దీన్ని ఎప్పుడూ. ఈ తప్పు.
నేను ఈ ఉపన్యాసం స్లయిడ్లను చూసిన అనుకుంటున్నాను మీరు మెమరీ ఈ మొత్తం రేఖాచిత్రం చూసిన మొదలు
ఎక్కడ ఇక్కడ మీరు మెమరీ చిరునామా 0 పొందారు
మరియు డౌన్ ఇక్కడ మీరు 32 మెమరీ చిరునామా 4 వేదికలను లేదా 2 ఉన్నాయి.
కాబట్టి మీరు కొన్ని విషయాలను మరియు కొన్ని అంశాలను పొందారు మరియు మీ స్టాక్ కలిగి
మరియు మీరు కేవలం పెరుగుతూ గురించి నేర్చుకోవడం ప్రారంభించింది మీ కుప్ప, పొందారు.
[విద్యార్థి] స్టాక్ పై కుప్ప కదా?
>> అవును. కుప్ప మీద, ఇది? >> [విద్యార్థి] Well, అతను పైన 0 ఉంచండి.
[విద్యార్థి] ఓహ్, అతను పైన 0 ఉంచండి. >> [విద్యార్థి] ఓహ్, ఓకే.
నిభంధనలు: ఎనీవేర్ CS50 మీకు ఈ విధంగా చూడండి చూడాలని. >> [విద్యార్థి] సరే.
ఇది కేవలం ఆ మీరు మొదటి, స్టాక్స్ చూసిన చేసినప్పుడు
మీరు మరొక పైన విషయాలు స్టాకింగ్ యొక్క భావించే స్టాక్ గురించి ఆలోచించినప్పుడు ఇష్టం.
కాబట్టి మేము స్టాక్ ఒక స్టాక్ సాధారణ వంటి పెరుగుతూ ఉంటుంది చుట్టూ ఈ కుదుపు ఉంటాయి
బదులుగా స్టాక్ డౌన్ ఉరి. >> [విద్యార్థి] అయితే heaps సాంకేతికంగా చాలా స్థాయికి లేదా?
ఇది స్థాయికి ద్వారా మీ ఉద్దేశ్యం ఏమిటి ఆధారపడి ఉంటుంది.
స్టాక్ మరియు కుప్ప ఎల్లప్పుడూ వ్యతిరేక దిశలో పెరుగుతాయి.
ఒక స్టాక్ ఎల్లప్పుడూ పెరగటాన్ని కోణంలో అప్ పెరుగుతోంది
అధిక మెమరీ చిరునామాలు, మరియు కుప్ప డౌన్ పెరుగుతోంది వైపు
అంటే ఇది తక్కువ మెమోరీ చిరునామాలను వైపు పెరగటాన్ని.
కాబట్టి టాప్ 0 మరియు దిగువ ఉన్నత మెమరీ చిరునామాలను ఉంది.
వారు కేవలం ఆదేశాలు వ్యతిరేకించడంలో, పెంచుకుంటున్నాం రెండు.
[విద్యార్థి] మీరు అడుగున స్టాక్ ఉంచారు మాట్లాడుతూ నేను అర్థం
ఇది స్టాక్ కోసం ఒక నిండుగా ఎగువన ప్రారంభించడానికి ఎందుకంటే మరింత స్పష్టమైన ఉంది, ఎందుకంటే
కుప్ప, చాలా యొక్క పైన కాబట్టి that's ఉంది - >> అవును.
మీరు కూడా స్టాక్ ఎక్కువగా పెరిగే మరియు పెద్ద వంటి కుప్ప యొక్క అనుకుంటున్నాను, కానీ.
కాబట్టి స్టాక్ మేము రకమైన పెరుగుతూ చూపించడానికి కావలసిన ఒకటి.
కానీ ప్రతిచోటా మీరు లేకపోతే చూడండి ఎగువన చిరునామా 0 చూపించడానికి అన్నారు
మరియు దిగువన అత్యధిక మెమరీ చిరునామా, కాబట్టి ఈ మెమరీ మీ సాధారణ అభిప్రాయం.
>> మీరు ఒక ప్రశ్న ఉందా?
[విద్యార్థి] మీరు మాకు కుప్ప గురించి మరింత వివరంగా చెప్పగలరా?
అవును. నేను రెండవ ఆ చూస్తారు.
మొదటి, & పీ తిరిగి ఎందుకు తిరిగి వెళ్ళడం, ఒక చెడ్డ విషయం
స్టాక్ మీద మీరు విధులను అన్ని సూచించే స్టాక్ ఫ్రేములు కొంత కలిగి
ఇది పిలిచారు.
మునుపటి విషయాలు విస్మరించి కాబట్టి, మీ స్టాక్ ఎగువ ఎల్లప్పుడూ ప్రధాన కార్యకలాపంగా అన్నారు
ఆ అని చేయబడిన మొదటి చర్య యొక్క నుండి.
ఆపై మీరు మరొక ఫంక్షన్ కాల్ చేసినప్పుడు, స్టాక్ డౌన్ పెరుగుతాయి అన్నారు.
నేను కొన్ని ఫంక్షన్, foo, కాల్ మరియు ఇది తన స్వంత స్టాక్ ఫ్రేమ్ గెట్స్ అయితే,
అది కొన్ని ఫంక్షన్, బార్ కాల్ చేయవచ్చు; తన స్వంత స్టాక్ ఫ్రేమ్ పొందుతాడు.
మరియు, బార్ పునరావృత ఉంటుంది మరియు అది కూడా కాల్ కాలేదు
అందువలన బార్ రెండో కాల్ తన సొంత స్టాక్ ఫ్రేమ్ పొందగలిగిన అని.
కాబట్టి ఈ స్టాక్ ఫ్రేమ్లలో క్రియల స్థానిక వేరియబుల్స్ అన్ని
మరియు ఆ ఫంక్షన్ వాదనలు -
ఈ ఫంక్షన్ కు స్థానికంగా దర్శిని గల ఏ విషయాలు ఈ స్టాక్ ఫ్రేమ్లలో వెళ్ళండి.
కాబట్టి, నేను బార్ లో లాగ ఒక ఫంక్షన్ ఉంది ఉన్నప్పుడు అర్థం
నేను ఒక పూర్ణాంకం ప్రకటించి ఆ పూర్ణాంక ఒక పాయింటర్ తిరిగి వెళుతున్న.
కాబట్టి Y పేరు వాడుకలో ఉంది?
[విద్యార్థి] y బార్ లో నివసిస్తున్నారు. >> [బౌడెన్] అవును.
ఎక్కడో మెమరీ ఈ చిన్న స్క్వేర్లో అది Y కలిగి littler కూడలి.
నేను తిరిగి & పీ, నేను, మెమరీ ఈ చిన్న బ్లాక్ ఒక పాయింటర్ తిరిగి నేను.
కానీ ఒక తిరిగి వచ్చే చర్యలు, దాని స్టాక్ ఫ్రేమ్ స్టాక్ ఆఫ్ popped తీర్చుకుంటాడు.
ఇది స్టాక్ అని ఎందుకు మరియు ఆ.
మీరు ఏ తెలిస్తే ఇది స్టాక్ డేటా నిర్మాణం వలె ఉంటుంది.
లేదా ట్రేలు ఒక స్టాక్ వలె, ఎల్లప్పుడూ ఉదాహరణ
ప్రధాన అడుగున వెళ్ళి అన్నారు, అప్పుడు మీరు కాల్ మొదటి చర్య, ఆ పైన వెళ్ళండి అన్నారు
మీరు పిలుస్తారు అన్ని విధులు నుండి తిరిగి వరకు మరియు మీరు ప్రధాన తిరిగి పొందలేము
అది పైన ఉంచారు.
>> మీరు చేస్తే [విద్యార్థి] కాబట్టి & పీ, ఆ విలువ నోటీసు లేకుండా మార్చబడవచ్చు ఉంది తిరిగి.
అవును, it's - >> ఇది భర్తీ అవుతుంది [విద్యార్థి]. >> అవును.
మీరు ప్రయత్నించండి ఉంటే మరియు - పూర్తిగా ఉంది -
అది ఒక పాయింటర్ తిరిగి ఎందుకంటే ఇది, ఒక పూర్ణాంకానికి * బార్ ఉంటుంది
కాబట్టి తిరిగి టైప్ Int * ఉంది.
మీరు ఈ చర్యను తిరిగి విలువ ఉపయోగించడానికి ప్రయత్నించండి, అది వివరింపబడని ప్రవర్తన యొక్క
ఆ పాయింటర్ చెడ్డ జ్ఞాపకం పాయింతు ఎందుకంటే. >> [విద్యార్థి] సరే.
సో వాట్ ఉంటే, ఉదాహరణకు, మీరు డిక్లేర్డ్ Int * Y = malloc (sizeof (Int))?
ఆ మంచి పని. అవును.
[విద్యార్థి] మేము మా రీసైకిల్ బిన్ విషయాలను డ్రాగ్ మేము ఎలా గురించి మాట్లాడారు
వారు వాస్తవానికి మాసిపోయిన లేదు; మేము వారి గమనికలు కోల్పోతారు.
కాబట్టి ఈ విషయంలో మేము దీన్ని మెమరీ ఇప్పటికీ అక్కడ విలువ వేయండి లేదా ఉంది లేదు?
చాలా వరకు, అది ఇప్పటికీ అక్కడ చేస్తాడు.
కానీ లెట్స్ మేము కొన్ని ఇతర చర్య, బాజ్ కాల్ జరిగే చెప్పారు.
బాజ్ ఇక్కడ దాని స్వంత స్టాక్ ఫ్రేమ్ పొందడానికి అన్నారు.
ఇది ఈ విషయాన్ని అన్ని తిరిగి రాయటం చేస్తాడు
మరియు మీరు తర్వాత, మీరు ముందు వచ్చింది అని పాయింటర్ ప్రయత్నించండి మరియు ఉపయోగిస్తే
ఒకే విలువ మాత్రం కాదు.
మీరు ఫంక్షన్ బాజ్ అని ఎందుకంటే కేవలం మార్చిన చెప్పారు.
[విద్యార్థి] కానీ మేము, మేము ఇప్పటికీ 3 పొందుతారు లేదు?
[బౌడెన్] అన్ని సంభావ్యత లో, మీరు ఆ.
కానీ మీరు ఆ నమ్మలేని. సి కేవలం వివరింపబడని ప్రవర్తన అన్నారు.
>> [విద్యార్థి] ఓహ్, అది. సరే.
Malloc ఉపయోగంలో వస్తుంది కాబట్టి మీరు ఒక పాయింటర్ తిరిగి ఉంటుంది, ఈ ఉంది.
నిజానికి రాయడం నేను కేవలం malloc తిరిగి (3 * sizeof (Int)).
మేము రెండవ మరింత malloc వెళ్ళి చేస్తాము, కానీ malloc యొక్క ఆలోచన మీ స్థానిక వేరియబుల్స్ యొక్క అన్ని
ఎప్పుడూ స్టాక్ సాగుతుంది.
Malloced చేసే ఏదైనా కుప్ప వెళ్లి, మరియు అది ఎప్పటికీ మరియు ఎల్లప్పుడూ నిండుగా ఉంటుంది
మీరు స్పష్టంగా ఇది ఉచితం వరకు.
కాబట్టి ఈ సమయంలో మీకు malloc ఏదో, అది తిరిగి వచ్చే చర్యలు తర్వాత మనుగడకు జరగబోతోంది అర్థం.
ప్రోగ్రామ్ను అమలు ఆపి తర్వాత [విద్యార్థి] ఇది విల్ సర్వైవ్? >> నం
సరే, ఈ కార్యక్రమం అన్ని మార్గం అమలు చేయబడుతుంది వరకు అక్కడ చేస్తాడు. >> అవును.
మేము ప్రోగ్రామ్ను అమలు ఆపి ఏం వివరాలు మీద వెళ్ళవచ్చు.
మీరు నన్ను గుర్తు అవసరం ఉండవచ్చు, కానీ ఆ పూర్తిగా వేరే విషయం.
[విద్యార్థి] కాబట్టి malloc ఒక పాయింటర్ సృష్టిస్తుంది? >> అవును.
Malloc - >> [విద్యార్థి] నేను malloc ఒక పాయింటర్ ఉపయోగించే మెమరీ బ్లాక్ అప్పగిస్తారు భావిస్తున్నాను.
[బౌడెన్] నేను మళ్ళీ ఆ చిత్రం కావలసిన. >> [విద్యార్థి] ఈ పనిచేసినప్పటికీ, పనిచేస్తుంది?
[విద్యార్థి] అవును, malloc మీరు ఉపయోగించే మెమరీ బ్లాక్ అప్పగిస్తారు,
మరియు అప్పుడు ఆ మెమరీ మొదటి బ్లాక్ యొక్క చిరునామా తిరిగి.
>> [బౌడెన్] అవును. కాబట్టి మీరు malloc, మీరు మెమరీ కొన్ని బ్లాక్ పట్టుకుని చేస్తున్నారు
ఆ కుప్ప ప్రస్తుతం ఉంది.
కుప్ప చాలా చిన్న ఉంటే, అప్పుడు కుప్ప కేవలం పెరగడం అంటే, మరియు ఈ దిశలో పెరుగుతుంది.
కాబట్టి యొక్క కుప్ప చాలా తక్కువ అని పిలవబడు.
అప్పుడు కొద్దిగా పెరుగుతాయి మరియు కేవలం పెరిగింది ఈ బ్లాక్ ఒక పాయింటర్ తిరిగి గురించి.
మీరు ఉచిత స్టఫ్ మీరు కుప్ప మరింత గది చేస్తున్న సమయంలో,
కాబట్టి తరువాత malloc పిలుపు మీరు గతంలో విడుదలైన అని ఆ స్మృతి తిరిగి చేయవచ్చు.
malloc మరియు ఉచిత గురించి ముఖ్యమైన విషయం ఏమిటంటే, మీరు పూర్తి నియంత్రణ ఇస్తుంది ఉంది
ఈ మెమరీ బ్లాక్లు యొక్క జీవితకాలంపై.
గ్లోబల్ వేరియబుల్స్ ఎల్లప్పుడూ సజీవంగా ఉన్నాయి.
స్థానిక వేరియబుల్స్ వాటి పరిధిలో జీవించి ఉన్నారు.
వెంటనే మీకు ఒక వంకర కలుపు గత వెళ్ళి వంటి, స్థానిక వేరియబుల్స్ నాశనమయ్యాయి.
మీరు జీవించి ఉన్నట్టు ఉంటుంది Malloced మెమరీ నిలిచి
మీరు విడుదల చెప్పాలి ఉన్నప్పుడు మరియు తరువాత విడుదల.
ఆ నిజంగా, నిజంగా మెమరీ మాత్రమే 3 రకాలు.
స్టాక్ ఉంది ఆటోమేటిక్ స్మృతి నిర్వహణ, ఉన్నాయి.
థింగ్స్ స్వయంచాలకంగా మీ కొరకు జరిగే.
మీరు Int x చెప్పినప్పుడు మెమరీ Int x కోసం కేటాయించబడుతుంది.
X స్కోప్ వస్తారు, మెమరీ x కోసం తిరిగి క్లెయిమ్.
అప్పుడు డైనమిక్ మెమరీ నిర్వహణ, ఇది malloc అంటే ఏమిటి, అక్కడ
మీరు కంట్రోల్ ఉన్నప్పుడు ఇది.
మీరు డైనమిక్ మెమరీ మరియు కేటాయించబడుతుంది కూడదు వచ్చినపుడు నిర్ణయించుకుంటారు.
మరియు తర్వాత స్థిరమైన ఉంది, ఇది దానిని ఎప్పటికీ నివసిస్తున్నారు అర్థం
ఇది ప్రపంచ వేరియబుల్స్ ఏమిటో ఉంది.
వారు మెమరీ కేవలం ఎప్పుడూ ఉన్నాము.
>> ప్రశ్నలు?
[విద్యార్థి] మీరు వంకర జంట కలుపులు ఉపయోగించి ఒక బ్లాక్ నిర్వచించలేదు
కానీ అవసరం లేదు ఒక ప్రకటన లేదా వంటి అయితే ప్రకటన లేదా ఏదైనా ఉంటే?
మీరు ఒక ఫంక్షన్ లో ఒక బ్లాక్ నిర్వచించే, కానీ అది చాలా వంకర జంట కలుపులు ఉంది.
[విద్యార్థి] కాబట్టి మీరు మీ కోడ్ లో కర్లీ జంట కలుపులు ఒక అనిర్దిష్ట జత వంటి ఉండకూడదు
స్థానిక వేరియబుల్స్ కలిగి? >> అవును, మీరు చెయ్యగలరు.
Int బార్ లోపల మేము {Int y = 3;} ఉన్నాయి.
కుడివైపు ఇక్కడ రావలసిన యొక్క.
కానీ పూర్తిగా Int y యొక్క పరిధిని నిర్వచిస్తుంది.
ఆ రెండవ వంకర కలుపు తరువాత, Y ఇకపై ఉపయోగించలేరు.
మీరు అయితే, అలా ఎన్నడూ.
, ఒక ప్రోగ్రామ్ ముగుస్తుంది ఏం తిరిగి పొందడం
మేము విషయాలు సులభంగా చేయడానికి ఇచ్చే ఒక దురభిప్రాయం / సగం అబద్ధం రకం ఉంది.
మీరు చెప్పే మీరు మెమరీని కేటాయించాల్సిన ఉన్నప్పుడు
మీరు ఆ వేరియబుల్ కోసం RAM యొక్క కొన్ని భాగం కేటాయించడం చేస్తున్నారు.
కానీ మీరు నిజంగా నేరుగా మీ కార్యక్రమాలలో ఎప్పుడూ RAM తాకడం లేదు.
మీరు ఆలోచించి ఉంటే, ఎలా నేను డ్రూ -
మీరు GDB లో ద్వారా వెళ్ళి ఉంటే వాస్తవానికి, మీరు ఇదే చూస్తారు.
సంబంధం లేకుండా మీరు మీ ప్రోగ్రామ్ లేదా మీరు అమలు చేస్తున్నారు ఏ కార్యక్రమం, అమలు ఎన్ని సార్లు
స్టాక్ ఎప్పుడూ మొదలు అన్నారు -
మీరు ఎల్లప్పుడూ చిరునామా oxbffff ఏదో చుట్టూ వేరియబుల్స్ చూడండి చూడాలని.
ఇది ఆ ప్రాంతంలో ఎక్కడో సాధారణంగా ఉంది.
కానీ ఎలా 2 కార్యక్రమాలు బహుశా అదే స్మృతికి గమనికలు కలిగి ఉంటాయి?
[విద్యార్థి] oxbfff RAM న రావలసిన కౌంటీ యొక్క స్వేచ్ఛా హోదా ఉంది
వాస్తవానికి ఫంక్షన్ పిలిచినప్పుడు బట్టి వివిధ ప్రాంతాలలో ఉంటుంది.
అవును. పదం కాల్పనిక స్మృతి ఉంది.
ఆలోచన ప్రతి ప్రక్రియ, మీ కంప్యూటర్లో రన్ ప్రతి ఒక్క ప్రోగ్రామ్
తన సొంత ఉంది - పూర్తిగా స్వతంత్ర చిరునామా స్థలం - లెట్స్ 32 బిట్స్ భావిస్తాయి.
ఈ చిరునామా స్థలం.
ఇది ఉపయోగించడానికి దాని స్వంత పూర్తిగా స్వతంత్ర 4 గిగాబైట్లు ఉంది.
>> మీరు ఒకేసారి 2 ప్రోగ్రామ్లను అమలు చేస్తే, ఈ కార్యక్రమం దాని 4 గిగాబైట్లు చూస్తాడు
ఈ కార్యక్రమం దాని 4 గిగాబైట్లు చూస్తాడు
మరియు ఈ కార్యక్రమం కోసం dereference ఒక పాయింటర్ అసాధ్యం
మరియు ఈ ప్రోగ్రామ్ నుంచి మెమరీ ముగిసేవి.
మరియు కాల్పనిక స్మృతి ఒక ప్రక్రియలు చిరునామా స్థలం నుండి ఒక మాపింగ్ ఉంది
RAM న అసలు విషయాలను.
కాబట్టి అది మీకు మీ ఆపరేటింగ్ సిస్టమ్ ఇష్టం,
హేయ్, ఈ వ్యక్తి dereferences పాయింటర్ oxbfff, ఆ నిజంగా అర్థం
అతను RAM బైట్ 1000, కోరుకుంటున్నట్లు
అయితే ఈ కార్యక్రమం dereferences oxbfff, అతను నిజంగా RAM బైట్ 10000 కోరుకుంటున్నారు.
వారు అహేతుకంగా దూరంగా విడిగా ఉంటుంది.
ఈ ఒక్క ప్రక్రియలు చిరునామా స్థలం లోపల విషయాలు కూడా వర్తిస్తుంది.
కాబట్టి లాగా కూడా అన్ని 4 గిగాబైట్లు, అయితే అని పిలవబడు యొక్క -
[విద్యార్థి] ప్రతి ప్రక్రియ లేదు -
మీరు RAM యొక్క మాత్రమే 4 గిగాబైట్ల ఒక కంప్యూటర్ కలిగి చెప్పారు.
ప్రతి ప్రక్రియ మొత్తం 4 గిగాబైట్లు చూడండి లేదు? >> అవును.
కానీ అది చూసే 4 గిగాబైట్లు ఒక అబద్ధం ఉంది.
ఇది కేవలం అది ఏ ఇతర ప్రక్రియ ఉంది తెలియని కారణంగా అది ఈ జ్ఞాపకం ఆలోచించడం మాత్రమే.
నిజానికి అవసరం ఇది మాత్రమే మెమరీని ఉపయోగిస్తుంది.
ఆపరేటింగ్ సిస్టమ్ ఈ ప్రక్రియ RAM ఇవ్వాలని వెళ్ళడం లేదు
ఈ మొత్తం ప్రాంతంలో ఏ మెమరీ ఉపయోగించడం దాన్ని.
ఇది ఆ ప్రాంతం కోసం మెమరీ ఇవ్వాలని మాత్రం కాదు.
కానీ ఆలోచన ఉంది - నేను ఆలోచించడానికి దీనికై - నేను ఒక సారూప్యత భావిస్తారు కాదు.
సారూప్యాలు కష్టం.
వర్చ్యువల్ మెమొరీ సమస్యలలో ఒకటి లేదా పరిష్కరించడానికి యొక్క విషయాలు ఒక
ప్రక్రియలు ఒకదానికొకటి పూర్తిగా తెలియదు ఉండాలని.
మరియు మీరు ఏ కార్యక్రమం రాయడం కేవలం dereferences ఏ పాయింటర్,
కేవలం, * (ox1234) అని ఒక ప్రోగ్రామ్ను రాయడం ఇష్టం
మరియు యొక్క ఆ dereferencing మెమరీ చిరునామా 1234.
>> కానీ అది ఏ 1234 అంటే అనువదించడానికి ఆపరేటింగ్ సిస్టమ్ ఇష్టం.
అయితే 1234, ఈ ప్రక్రియ కోసం చెల్లుబాటు అయ్యే మెమరీ చిరునామా నిర్మాణము
ఇది స్టాక్ లేదా ఏదైనా వలె, తర్వాత ఇది మెమరీ చిరునామా విలువ తిరిగి
చాలా ప్రక్రియ తెలుసుకోవచ్చు.
భూమి నిర్మాణము వంటి అయితే 1234, ఒక చెల్లని చిరునామా
స్టాక్ మించిన ఇక్కడ మెమరీ కొన్ని చిన్న ముక్క లో మరియు కుప్ప దాటి
మరియు మీరు నిజంగా మీరు segfaults వంటి వాటిని వచ్చిన ఆ, అప్పుడు ఆ ఉపయోగించలేదు
మీరు తాకడం లేదు ఆ స్మృతి తాకడం అయినందున.
ఈ కూడా వాస్తవం -
ఒక 32-bit వ్యవస్థ, 32 బిట్స్ మీరు ఒక మెమరీ చిరునామా నిర్వచించడానికి 32 బిట్స్ కలిగివుంటాయి.
లేదా 4 బైట్లు - గమనికలు 8 బైట్లు ఎందుకు 32 బిట్స్ 8 బైట్లు ఎందుకంటే ఇది.
గమనికలు 4 బైట్లు ఉంటాయి.
కాబట్టి మీరు oxbfffff వంటి పాయింటర్ చూసినప్పుడు, ఆ -
ఏ కార్యక్రమం లోపల మీరు ఏ అనియత పాయింటర్ నిర్మించవచ్చు
ఎక్కడైనా ox0 నుండి ఆక్స్ 8 f's కు - ffffffff.
[విద్యార్థి] వారు 4 బైట్లు అని చెప్పుకోవాలంటే లేదు? >> అవును.
[విద్యార్థి] అప్పుడు ప్రతి బైట్ ఉంటుంది - >> [బౌడెన్] హెక్సాడెసిమల్.
హెక్సాడెసిమల్ - 5, 6, 7, 8. గమనికలు మీరు ఎల్లప్పుడూ హెక్సాడెసిమల్ లో చూడండి చూడాలని.
ఇది మేము గమనికలు వర్గీకరించడానికి ఎలా కేవలం ఉంది.
హెక్సాడెసిమల్ యొక్క ప్రతి 2 అంకెలు 1 బైట్ ఉంది.
కాబట్టి 4 బైట్లు కోసం 8 హెక్సాడెసిమల్ సంఖ్యలను ఉన్నట్లు జరగబోతోంది.
కాబట్టి ఒక 32-bit వ్యవస్థలో ప్రతి ఒక్క పాయింటర్, 4 బైట్లు అవతరిస్తుంది
ఇది మీ ప్రక్రియలో మీరు ఏ అనియత 4 బైట్లు నిర్మించవచ్చు అంటే
మరియు, అది ఒక పాయింటర్ చేసుకుంటారు
ఇది చాలా అది తెలుసు యొక్క, ఇది మెమరీ 32 బైట్లు ఒక పూర్తి 2 తెలుపుతుంది అర్థం.
అది నిజంగా ఆ ప్రాప్తి లేదు ఉన్నప్పటికీ,
మీ కంప్యూటర్ మాత్రమే 512 మెగాబైట్ల ఉన్నప్పటికీ అది ఆ మెమరీని కలిగి భావిస్తున్నారు.
మరియు ఆపరేటింగ్ సిస్టమ్ మాత్రమే మీరు నిజంగా అవసరమైన కేటాయించాలని ఆ తగినంత స్మార్ట్ ఉంది.
4 వేదికలను: ఇది కేవలం, OH, ఒక కొత్త ప్రక్రియ పోదు.
>> అవును. >> [విద్యార్థి] ఆక్స్ శతకము ఎందుకు మీరు వ్రాస్తారా?
ఇది కేవలం హెక్సాడెసిమల్ కోసం చిహ్నం యొక్క.
మీరు ఎద్దు ఒక సంఖ్య ప్రారంభం చూసినప్పుడు, వరుస విషయాలు హెక్సాడెసిమల్ ఉంటాయి.
[విద్యార్థి] మీరు ఒక కార్యక్రమం ముగిసిన తరువాత ఏమి జరుగుతుందో వివరించే చేశారు. >> అవును.
ఏ ప్రోగ్రాం ముగిసిన తరువాత జరుగుతుంది ఆపరేటింగ్ సిస్టమ్
కేవలం erases ఈ చిరునామాలకు ఉంది, అంతే ఆ లను.
ఆపరేటింగ్ సిస్టమ్ ఇప్పుడు కేవలం ఉపయోగించడానికి మరొక ప్రోగ్రామ్ మెమరీ ఇస్తుంది.
[విద్యార్థి] సరే.
కాబట్టి మీరు కుప్ప లేదా స్టాక్ లేదా ప్రపంచ చరరాశులు లేదా ఏదైనా న ఏదో కేటాయించాలని ఉన్నప్పుడు,
వారు అన్ని కేవలం వెంటనే కార్యక్రమం ముగుస్తుంది వంటి అదృశ్యం
ఆపరేటింగ్ సిస్టమ్ ఇప్పుడు ఇతర ప్రక్రియ ఆ మెమరీ ఇవ్వాలని ఉచిత ఎందుకంటే.
[విద్యార్థి] వ్రాసిన విలువలు ఇంకా బహుశా అక్కడ అయినప్పటికీ? >> అవును.
విలువలు ఇంకా అవకాశం ఉన్నాయి.
ఇది కేవలం వారికి వద్ద వేయటం కష్టం చేస్తాడు అన్నారు.
అది ఒక తొలగించిన ఫైలు వద్ద పొందడానికి కంటే ఇది వాటిని పొందడానికి చాలా కష్టం
యొక్క తొలగించబడిన ఫైలు రకం కాలం అక్కడ కూర్చుని, హార్డ్ డ్రైవ్ చాలా పెద్దగా ఉంది కాబట్టి.
కనుక ఇది మెమరీ వివిధ ప్రాంతాల ఓవర్రైట్ జరగబోతోంది
ఆ ఫైలు వద్ద కలిగిన మెమరీ భాగం ఓవర్రైట్ జరిగినప్పుడు ముందు.
కానీ ప్రధాన మెమరీ, వేగంగా చాలా ద్వారా మీరు చక్రం RAM,
కాబట్టి ఇది చాలా వేగంగా భర్తీ చేస్తాడు.
ఈ లేదా ఏదైనా ప్రశ్నలకు?
[విద్యార్థి] నేను వేరే అంశం గురించి ప్రశ్నలు. సరే >>.
ఎవరైనా ఈ ప్రశ్నలకు కలిగి ఉందా?
>> సరే. వివిధ టాపిక్. >> [విద్యార్థి] సరే.
నేను, ఆచరణలో పరీక్షలు కొన్ని ద్వారా వెళుతున్న
మరియు వాటిని ఒకటి దానిని sizeof మాట్లాడుతున్న
మరియు విలువ తిరిగి లేదా వివిధ రకాల వేరియబుల్ ఆ. >> అవును.
మరియు అది Int మరియు పొడవైన రెండు తిరిగి 4 రెండు, కాబట్టి వారు రెండు 4 బైట్లు దీర్ఘ అని చెప్పారు.
ఒక Int మరియు దీర్ఘ ఏమైనా తేడా ఉందా, లేదా అదే విషయం?
అవును, ఒక తేడా ఉంది.
సి ప్రామాణిక -
నేను బహుశా మురికిని వెళుతున్న.
సి ప్రామాణిక కేవలం సి, సి అధికారిక డాక్యుమెంటేషన్ గురించే ఉంది
ఈ అది ఏమిటి.
కాబట్టి సి ప్రామాణిక కేవలం చార్ ఎప్పటికీ మరియు ఎల్లప్పుడూ 1 బైట్ చెబుతుంది.
ఆ తర్వాత అంతా - ఒక చిన్న ఎల్లప్పుడూ కంటే ఎక్కువ లేదా ఒక చార్ కు సమానమని నిర్వచించబడింది ఉంది.
ఈ ఖచ్చితంగా కంటే ఎక్కువ, కాని సానుకూల లేదు కావచ్చు.
ఒక పూర్ణాంకానికి కేవలం కంటే ఎక్కువ లేదా తక్కువ కు సమానమని నిర్వచించబడింది.
మరియు పొడవైన కేవలం కంటే ఎక్కువ లేదా ఒక పూర్ణాంకానికి సమానంగా నిర్వచించారు.
మరియు ఒక లాంగ్ లాంగ్ కంటే ఎక్కువ లేదా సుదీర్ఘ సమానంగా ఉంటుంది.
కాబట్టి సి ప్రామాణిక నిర్వచిస్తుంది మాత్రమే విషయం ప్రతిదీ సంబంధిత క్రమం ఉంటుంది.
విషయాలు పడుతుంది ఆ స్మృతి మొత్తం వాస్తవిక, అప్ అమలు సాధారణంగా ఉంటుంది
కానీ ప్రెట్టీ బాగా ఈ సమయంలో నిర్వచించిన ఉంది. >> [విద్యార్థి] సరే.
కాబట్టి లఘు చిత్రాలు దాదాపు ఎల్లప్పుడూ 2 బైట్లు ఉంటాయని నేను.
Ints దాదాపు ఎల్లప్పుడూ 4 బైట్లు ఉంటాయని నేను.
లాంగ్ longs దాదాపు ఎల్లప్పుడూ 8 బైట్లు ఉంటాయని నేను.
మరియు మీరు ఒక 32-bit లేదా 64-bit వ్యవస్థ ఉపయోగించే అనేదాని మీద ఆధారపడి ఉంటుంది, longs.
కాబట్టి సుదీర్ఘ వ్యవస్థ యొక్క రకం అనుగుణంగా అన్నారు.
మీరు ఉపకరణం వంటి 32-bit వ్యవస్థ ఉపయోగిస్తున్నట్లయితే, అది 4 బైట్లు చేస్తాడు.
మీరు ఇటీవల కంప్యూటర్ల చాలా వంటి 64-bit ఉపయోగిస్తున్నట్లయితే, అది 8 బైట్లు చేస్తాడు.
>> Ints దాదాపు ఎల్లప్పుడూ ఈ సమయంలో 4 బైట్లు ఉంటాయి.
లాంగ్ longs దాదాపు ఎల్లప్పుడూ 8 బైట్లు ఉంటాయి.
గతంలో, ints మాత్రమే 2 బైట్లు ఉండాలి.
కానీ ఈ పూర్తిగా కంటే ఎక్కువ మరియు సమానంగా ఈ సంబంధాలు అన్ని తృప్తిపరిచే విధంగా గుర్తిస్తారు.
సో లాంగ్ ఖచ్చితంగా పూర్ణాంకం వంటి ఒకే పరిమాణాన్ని అనుమతించబడిన,
మరియు అది కూడా పెద్ద కాలం ఒకే పరిమాణాన్ని అనుమతించబడతాయో.
మరియు ఇది కేవలం కాబట్టి వ్యవస్థలు 99.999%, ఇది సమానంగా అన్నారు ఆ నిర్మాణము
ఒక పూర్ణాంకానికి లేదా లాంగ్ లాంగ్ గాని. ఇది కేవలం 32-bit లేదా 64-bit ఆధారపడి ఉంటుంది. >> [విద్యార్థి] సరే.
తేలియాడుతున్న లో బిట్స్ పరంగా నియమించబడిన దశాంశ పాయింట్ ఎలా ఉంది?
బైనరీ వంటి నచ్చిందా? >> అవును.
మీరు CS50 కోసం మీకు లేదు.
మీరు కూడా 61 ఆ తెలుసుకోవడానికి లేదు.
మీరు ఏ కోర్సులో ఆ నిజంగా తెలుసుకోవడానికి లేదు.
ఇది కేవలం ప్రాతినిధ్యం ఉంది.
నేను ఖచ్చితమైన బిట్ కేటాయింపులు మర్చిపోతే.
ఫ్లోటింగ్ పాయింట్ ఆలోచన మీరు ప్రాతినిధ్యం బిట్స్ ఒక నిర్దిష్ట సంఖ్య కేటాయించాలని ఉంది -
సాధారణంగా, ప్రతిదీ శాస్త్రీయ విధానంలో ఉంది.
కాబట్టి మీరు 1,2345 వంటి సంఖ్య కూడా ప్రాతినిధ్యం బిట్స్ ఒక నిర్దిష్ట సంఖ్య కేటాయించాలని.
నేను 5 కంటే ఎక్కువ అంకెలు ఒక సంఖ్య ప్రాతినిధ్యం ఎప్పుడూ.
ఇలాంటి ఉంటుంది కాబట్టి మీరు కూడా బిట్స్ ఒక నిర్దిష్ట సంఖ్య కేటాయించాలని
మీరు కలిగి అతిపెద్ద ఆనవాలు యొక్క మీకు మాత్రమే, ఒక నిర్దిష్ట సంఖ్యలో వరకు వెళ్ళవచ్చు,
మరియు మీరు మాత్రమే, ఒక నిర్దిష్ట ఆనవాలు క్రిందికి వెళ్ళే
మీరు కలిగి చిన్న ఆనవాలు అని ఇష్టం.
>> నేను, ఖచ్చితమైన మార్గం బిట్స్ ఈ విలువలు అన్ని కేటాయించిన గుర్తుంచుకోండి లేదు
కానీ బిట్స్ నిర్దిష్ట సంఖ్యలో, 1,2345 అంకితమయ్యారు
బిట్స్ మరొక నిర్దిష్ట సంఖ్యలో, ఆనవాలు అంకితమయ్యారు
మరియు ఒక నిర్దిష్ట పరిమాణం యొక్క ఒక ఆనవాలు ప్రాతినిధ్యం మాత్రమే సాధ్యం.
[విద్యార్థి], డబుల్? ఒక అదనపు కాలం ఫ్లోట్ లాగా ఉంటుంది? >> అవును.
ఇది ఇప్పుడు మీరు బదులుగా 4 బైట్లు 8 బైట్లు ఉపయోగించే తప్ప ఫ్లోట్ అదే విషయం.
ఇప్పుడు మీరు, 9 అంకెలు లేదా 10 అంకెలు చేయగలరు
మరియు ఈ 300 బదులుగా 100 వరకు వెళ్ళి చేయగలరు. >> [విద్యార్థి] సరే.
మరియు తేలియాడుతున్న కూడా 4 బైట్లు ఉంటాయి. >> అవును.
Well, మళ్ళీ, అది బహుశా, సాధారణ అమలు పై మొత్తం ఆధారపడి ఉంటుంది
కానీ తేలియాడుతున్న 4 బైట్లు ఉంటాయి, డబుల్స్ 8 ఉన్నాయి.
వారు డబుల్ తెప్పల పరిమాణం ఎందుకంటే డబుల్స్ డబుల్ అంటారు.
[విద్యార్థి] సరే. మరియు అక్కడ డబుల్స్ ఉన్నాయి? >> లేవు.
నేను అనుకుంటున్నాను - దీర్ఘ longs ఇలా >> [విద్యార్థి]? >> అవును. నేను భావించడం లేదు. అవును.
గత సంవత్సరం పరీక్ష ఆన్ [విద్యార్థి] ప్రధాన విధి గురించి ప్రశ్న ఉంది
మీ కార్యక్రమంలో ఒక భాగం అవసరం.
సమాధానం మీ కార్యక్రమంలో ఒక భాగం లేదు అని.
ఏ పరిస్థితిలో? నేను చూసిన ఉంది.
[బౌడెన్] ఇది ఉంది - >> [విద్యార్థి] ఏమిటి పరిస్థితి?
మీరు సమస్య ఉందా? >> [విద్యార్థి] అవును, నేను ఖచ్చితంగా ఇది పుల్ అప్ చేయవచ్చు.
ఇది సాంకేతికంగా, కావలసిన అవసరం లేదు, కానీ ప్రధానంగా ఇది చేస్తాడు.
[విద్యార్థి] నేను వేరే సంవత్సరం లో ఒక చూసింది.
ఇది ఒప్పు లేదా తప్పు నచ్చింది: సరైన - >> ఓహ్, ఒక సి ఫైలు.?
. [విద్యార్థి] ఏదైనా సి ఫైల్ కలిగి ఉండాలి - [ఒకేసారి మాట్లాడే రెండు - అపారదర్శక]
సరే. కాబట్టి ప్రత్యేక ఉంది.
>> ఒక. సి ఫైలు కేవలం విధులు కలిగి ఉంది.
మీరు ఒక యంత్రం కోడ్ లోకి ఫైలు, బైనరీ, ఏ, కంపైల్ చేయవచ్చు
లేకుండా ఇంకా executable ఉంది.
సరైన executable ఒక ప్రధాన విధి కలిగి ఉండాలి.
మీరు 100 1 ఫైలు లో విధులు కాని ప్రధాన రాయడం
తరువాత, బైనరీ ఆ డౌన్ కంపైల్
అప్పుడు మీరు మాత్రమే ప్రధాన మరో ఫైల్ను వ్రాయడానికి కానీ ఈ విధులను కొంత కాల్స్
ఇక్కడ ఈ బైనరీ ఫైలు లో.
కాబట్టి మీరు executable చేస్తున్న సమయంలో, ఆ లింకర్ దేనిని యొక్క
ఈ 2 బైనరీ ఫైళ్ళను ఒక ఎక్జిక్యూటబుల్ లోకి మిళితం ఉంది.
కాబట్టి ఒక. సి ఫైల్ అన్ని వద్ద ఒక ప్రధాన చర్య అవసరం లేదు.
మరియు పెద్ద కోడ్ స్థావరాలు మీరు. సి ఫైళ్ళను మరియు 1 ప్రధాన ఫైలు వేల చూస్తారు.
మరిన్ని ప్రశ్నలు?
[విద్యార్థి] మరొక ప్రశ్న ఉంది.
ఇది తయారు ఒక కంపైలర్ చెప్పాడు. సత్యం లేదా అసత్యం?
మరియు సమాధానాన్ని తప్పుడు, మరియు అది గణగణమని ద్వని చేయు వంటి కాదు నేను అర్థం.
కానీ మేము అలా కాకపోతే ఏమి కాల్ చెయ్యాలి?
చేయి కేవలం రప్పించింది - నేను దీనిని సరిగ్గా అదే చూడగలరు.
కానీ అది కేవలం ఆదేశాలను నడుస్తుంది.
చేయి.
నేను ఈ పుల్ అప్ చేయవచ్చు. అవును.
ఓహ్, అవును. చేయి కూడా ఆ చేస్తుంది.
చేయండి ప్రయోజనం ప్రయోజనం స్వయంచాలకంగా గుర్తించడానికి చెప్పారు
ఒక పెద్ద కార్యక్రమం ముక్కలు recompiled అవసరం ఇది
మరియు వారిని మళ్ళీ కంపైల్ చెయ్యండి ఆదేశాలను జారీ.
మీరు ఖచ్చితంగా భారీ ఫైళ్ళను తయారు చేయవచ్చు.
చేయి, మేము ముందు చెప్పారు వంటి ఫైళ్ళ టైమ్ స్టాంప్స్ చూసి,
మీరు ఒక్కొక్క ఫైళ్ళు డౌన్ కంపైల్ చేయవచ్చు, మరియు మీరు లింకర్ ను వరకు అది కాదు
వారు ఒక ఎక్జిక్యూటబుల్ లోకి కలిసి చేస్తున్న.
మీరు 10 వివిధ ఫైళ్లను కలిగి మరియు మీరు, వాటిలో 1 మార్పు చేసుకుంటూ ఉంటే
అప్పుడు ఏమి ఉందని అన్నారు కేవలం మళ్ళీ కంపైల్ చెయ్యండి అని 1 ఫైలు
ఆపై కలిసి ప్రతిదీ మళ్లీ లింక్.
కానీ కంటే dumber ఉంది.
ఇది పూర్తిగా అది చేయడం చేయాలి ఏమి లేదని నిర్వచించే వరకు మీరు ఉంది.
ఇది సిద్ధంగా, ఈ టైమ్ స్టాంప్ stuff గుర్తించి సామర్ధ్యాన్ని కలిగి ఉంది
కానీ మీరు ఏదైనా ఒక మొదలు ఫైలు వ్రాయగలవు.
మీరు వ్రాసే ఫైలు చేస్తే మీరు ఇది CD యొక్క మరొక డైరెక్టరీ చేయడానికి టైప్ చేసినప్పుడు.
నేను విసుగు పొందారు నేను టాక్ ప్రతిదీ నా ఉపకరణం లోపల ఎందుకంటే
మరియు నేను Mac నుండి PDF చూడవచ్చు.
>> నేను శోధిని వెళ్ళండి మరియు నేను క్రమబద్ధీకరించడం, సర్వర్కు కనెక్ట్,
మరియు నేను కనెక్ట్ సర్వర్ నా ఉపకరణం, ఆ తరువాత PDF ప్రారంభం
ఆ LaTeX సంకలనం తీర్చుకుంటాడు.
కానీ నేను విసుగు పొందారు నేను PDF రిఫ్రెష్ అవసరం ప్రతి సమయం ఎందుకంటే,
నేను ప్రాప్తి చేయగల నిర్దిష్ట డైరెక్టరీ కాపీ వచ్చింది
మరియు అది బాధించే పొందారు.
కాబట్టి బదులుగా నేను మీరు విషయాలు చేస్తుంది ఎలా నిర్వచించాలి కలిగి ఉండే మొదలు ఫైలు, రాశాడు.
మీరు ఎలా ఈ PDF LaTeX ఉంది.
ఏ ఇతర మొదలు ఫైల్ - లేదా నేను మీరు చేసే ఫైళ్లను చూడని ఊహించడం,
కానీ మేము, ఉపకరణ కేవలం అని ప్రపంచ మొదలు ఫైలుని కలిగి
మీరు ఒక ఫైల్ సి కంపైల్ ఉంటే, గణగణమని ద్వని చేయు ఉపయోగించవచ్చు.
మరియు ఇక్కడ నా మొదలు ఫైలులో నేను చెబుతాను ఆ,
ఈ ఫైలు మీరు PDF LaTeX తో కంపైల్ మీరు చూడాలని.
మరియు అందువలన సేకరించి ఏమి ఆ PDF LaTeX ఉంది.
చేయి కంపైల్ లేదు. ఇది కేవలం నేను పేర్కొన్న క్రమంలో ఈ ఆదేశాలను అమలు ఉంది.
కనుక ఇది PDF LaTeX నడుస్తుంది, ఇది నేను కాపీ అనుకుంటే డైరెక్టరీ అది కాపీ
ఇది CD యొక్క డైరెక్టరీ మరియు ఇతర పనులు చేసే,
కానీ అది అన్ని, ఒక ఫైల్ మార్పుల గుర్తించి ఉంది
అది మార్చినట్లయితే మరియు, అది అమలు భావించే ఆదేశాలను కనిపిస్తుంది
ఉన్నప్పుడు ఫైల్ మార్పుల. >> [విద్యార్థి] సరే.
నేను ప్రపంచ మొదలు ఫైళ్లను నాకు దాన్ని తనిఖీ కోసం ఎక్కడ తెలియదు.
ఇతర ప్రశ్నలు? గత ఏదైనా క్విజ్లు? ఏదైనా పాయింటర్ విషయాలు?
వంటి గమనికలు తో సూక్ష్మ విషయాలు ఉన్నాయి -
నేను ఒక క్విజ్ ప్రశ్న కనుగొనగలరు వెళుతున్న కాదు -
కానీ విషయం ఈ విధమైన ఇష్టపడుతున్నారు.
నేను మీరు అర్థం నిర్ధారించుకోండి Int * x * Y -
ఈ ఖచ్చితంగా ఇక్కడ ఏదైనా కాదు, నేను ఊహిస్తున్నాను.
కానీ వంటి * x * Y, ఆ స్టాక్ మీద ఉన్న 2 వేరియబుల్స్ ఉన్నాయి.
నేను ఎప్పుడు x = malloc (sizeof (Int)), x, ఇప్పటికీ స్టాక్ ఒక చరరాశి
malloc కుప్ప లో కొంత బ్లాక్, మరియు మేము కుప్ప కు x పాయింట్ సమస్య.
>> కుప్ప కు స్టాక్ పాయింట్లు ఏదో కాబట్టి.
ఎప్పుడు మీరు malloc ఏదైనా, మీరు తప్పనిసరిగా ఒక పాయింటర్ లోపలి నిల్వ చేస్తున్నారు.
ఆ పాయింటర్ స్టాక్ ఉంది కాబట్టి, malloced బ్లాక్ కుప్ప ఉంది.
మంది అయోమయం పొందండి మరియు చెప్పడానికి Int * x = malloc; x కుప్ప ఉంది.
X సూచిస్తుంది ఏమి నం కుప్ప ఉంది.
ఏ కారణం చేతనైనా సరే మీరు x ప్రపంచ చరరాశి ఉంటే తప్ప x కూడా, స్టాక్ ఉంది
ఈ సందర్భంలో అది మెమొరీ మరొక ప్రాంతంలో నిర్మాణము.
పర్యవేక్షించడం కాబట్టి, ఈ బాక్స్ మరియు బాణం చిత్రాలు క్విజ్ కోసం చాలా సాధారణం.
అది క్విజ్ 0 లో లేకుంటే లేదా, అది క్విజ్ 1 ఉంటుంది.
మీరు కంపైల్ లో దశలను ఈ అన్ని తెలుసుకోవాలి
ఆ ప్రశ్నలకు సమాధానం వచ్చేది. అవును.
[విద్యార్థి] మేము ఆ దశలను వెళ్ళి కాలేదు - >> ఖచ్చితంగా.
దశలు మరియు కంపైల్ ముందు మేము, preprocessing కలిగి
, కంపైల్ కలపడం మరియు కలుపుతుంది.
Preprocessing. ఆ ఏమి చేస్తుంది?
అది సులభమైన దశ - బాగా, కాదు వంటి -
అది స్పష్టమైన ఉండాలి కాదు, కానీ సులభమైన దశల ఉంది.
మీరు అబ్బాయిలు ఇది నిన్ను నీవు అమలు కాలేదు. అవును.
[విద్యార్థి] మీరు మీ కలిగి దీన్ని ఇష్టపడుతున్నారు కలిగి టేక్ మరియు అది ప్రతులు మరియు తరువాత కూడా నిర్వచిస్తుంది.
ఇది # ఉన్నాయి వంటి వాటిని పరీక్షిస్తుంది మరియు # define
అది కాపీలు మరియు ముద్ద ఆ నిజానికి అర్ధాన్ని.
కాబట్టి మీరు # cs50.h ఉన్నాయి చెప్పినప్పుడు ప్రీప్రాసెసర్ కాపీ మరియు పేస్ట్ cs50.h ఉంది
ఆ లైను.
మీరు # 4 కు x నిర్వచించే చెప్పినప్పుడు ప్రీప్రాసెసర్ మొత్తం కార్యక్రమం ద్వారా వెళుతుంది
మరియు 4 తో x యొక్క అన్ని పర్యాయాలు భర్తీ.
కాబట్టి ప్రీప్రాసెసర్ చెల్లుబాటు అయ్యే సి ఫైల్ తీసుకుని చెల్లుబాటు అయ్యే సి ఫైలు అందిస్తుంది
పేరు విషయాలు కాపీ అతికించినది జరిగింది.
కాబట్టి ఇప్పుడు కంపైల్. ఆ ఏమి చేస్తుంది?
[విద్యార్థి] ఇది C నుండి బైనరీ వెళుతుంది.
>> [బౌడెన్] ఇది బైనరీ అన్ని వ్యాపించదు.
[విద్యార్థి] యంత్రం కోడ్ తరువాత? >> ఇది యంత్రం కోడ్ కాదు.
[విద్యార్థి] అసెంబ్లీ? >> అసెంబ్లీ.
అది సి కోడ్ వరకు వెళ్ళే ముందు ఇది అసెంబ్లీ కి వెళతాడు
మరియు అనేక భాషల్లో ఈ వంటి ఏదో ఒకటి.
ఏ స్థాయి భాష ఎంచుకోండి మరియు మీరు కంపైల్ చూడాలని ఉంటే,
అది దశల్లో తయారు చేసుకుని ఉండవచ్చు.
మొదట సి కు పైథాన్ కంపైల్ అవకాశముంది, అప్పుడు, శాసనసభకు సి కంపైల్ వెళుతున్న
తరువాత అసెంబ్లీ బైనరీ అనువదించబడింది get అన్నారు.
కాబట్టి కంపైల్ సి నుండి అసెంబ్లీ ముందుకు తీసుకుని అన్నారు.
కంపైల్ పదం సాధారణంగా ఒక ఉన్నత స్థాయి నుండి తీసుకు అర్థం
తక్కువ స్థాయి ప్రోగ్రామింగ్ భాష.
కాబట్టి మీరు ఉన్నత స్థాయి భాష ప్రారంభం పేరు సంకలనంలో మాత్రమే అడుగు
మరియు తక్కువ స్థాయి భాషలో ముగుస్తుంది, మరియు దశల కంపైల్ అంటారు ఎందుకు ఆ.
కంపైల్ సమయంలో [విద్యార్థి], యొక్క మీరు # ఉన్నాయి పూర్తి చేసిన అని పిలవబడు cs50.h.
కంపైలర్ మళ్ళీ కంపైల్ చెయ్యండి cs50.h విల్, అక్కడ ఉన్న విధులు వలె,
మరియు అలాగే ఆ అసెంబ్లీ కోడ్ అనువదించు
లేదా ముందు అసెంబ్లీ చేసినది కాపీ చేసి అతికించిన కనిపిస్తుంది?
cs50.h చాలా చక్కని అసెంబ్లీలో ముగుస్తుంది ఎప్పుడూ.
ఫంక్షన్ నమూనాలను మరియు విషయాలు వంటి స్టఫ్ మీరు జాగ్రత్తగా కేవలం ఉంటాయి.
మీరు విధులు కాల్ చేస్తున్నారు కంపైలర్ విషయాలు తనిఖీ చేయవచ్చు హామీని
కుడివైపు తిరిగి రకాల మరియు కుడి వాదనలు మరియు విషయాలలో.
>> ఇది కంపైల్ యొక్క కనుక cs50.h అప్పుడు ఫైల్లోకి ప్రాసెస్, మరియు ఉంటుంది
ప్రతిదీ సరిగ్గా అని ఉంది అని మీరు చేస్తుంది తరువాత ఇది ప్రాథమికంగా దూరంగా విసిరిన యొక్క.
కానీ CS50 లైబ్రరీలో నిర్వచించిన చర్యలు, cs50.h వేరుగా ఉంటుంది ఇది
ఆ వేరుగా సంకలనం కాదు.
వాస్తవానికి లింక్ దశలో డౌన్ వస్తుందని, కాబట్టి మేము రెండవ ఆ చూస్తారు.
కానీ మొదటి, ఏ సమీకరించడం ఉంది?
బైనరీ కు [విద్యార్థి] అసెంబ్లీ? >> అవును.
అసెంబ్లింగ్.
అసెంబ్లీ చాలా చక్కని బైనరీ యొక్క స్వచ్ఛమైన అనువాదం ఎందుకంటే మేము కంపైల్ కాల్ లేదు.
అసెంబ్లీ నుంచి బైనరీ వెళ్ళి చాలా తక్కువ తర్కం ఉంది.
ఇది కేవలం ఒక టేబుల్ లో చూస్తున్నప్పుడు ఇష్టం అన్నారు, OH, మేము ఈ ఆదేశం కలిగి ఉంటాయి;
ఆ బైనరీ 01110 సూచించదు.
కాబట్టి ఫైళ్ళను బహిర్గత అంశాలను ఉత్పత్తి సాధారణంగా సిద్ధం. O ఫైళ్లు.
మరియు. O ఫైళ్ళను మేము ముందు చెప్పడం ఏ ఉంటాయి,
ఎలా ఫైలు ప్రధాన చర్య అవసరం లేదు.
ఏదైనా ఫైల్ చెల్లుబాటు అయ్యే సి ఫైల్ కాలం ఒక. O ఫైలుకు డౌన్ సంకలనం చేయవచ్చు.
ఇది. O క్రిందికి సంకలనం చేయవచ్చు.
ఇప్పుడు, కలుపుతుంది. వాస్తవానికి కొంత తెస్తుంది ఏ o ఫైళ్ళను మరియు ఒక ఎక్జిక్యూటబుల్ వాటిని తెస్తుంది.
కాబట్టి ఏమి లింకింగ్ చేస్తుంది మీరు ఒక. O ఫైల్ వలె CS50 లైబ్రరీ యొక్క ఆలోచించవచ్చు ఉంది.
ఇది ఇప్పటికే సంకలనం బైనరీ ఫైలు.
కాబట్టి మీరు GetString పిలిచే మీ ఫైలు, మీ hello.c, కంపైల్ సమయంలో
hello.c, hello.o క్రిందికి సంకలనం అవుతుంది
hello.o బైనరీ లో ఉంది.
, ఇది GetString ఉపయోగిస్తుంది, అందువలన దీనిని cs50.o కు వెళ్ళి అవసరం
మరియు లింకర్ కలిసి వాటిని smooshes మరియు ఈ ఫైల్లోకి GetString కాపీ
మరియు అది అవసరం అన్ని పనులు చేసే executable తో బయటకు వస్తుంది.
కాబట్టి cs50.o నిజానికి ఒక O ఫైల్ కాదు, కానీ ఏ విధమైన మౌలిక తేడా లేదని దగ్గరగా ఉంది.
కాబట్టి కేవలం లింక్ కలిసి ఫైళ్లను కొంత తెస్తుంది
విడిగా విధులను అన్ని కలిగి నేను ఉపయోగించాలి
మరియు వాస్తవానికి అమలు చేసే executable సృష్టిస్తుంది.
>> అందువలన, మేము ముందు చెప్పడం ఏ కూడా
మీరు 1000 చెయ్యగల. సి ఫైళ్లు, మీరు వాటిని అన్ని కంపైల్. o ఫైళ్లు,
బహుశా కొంత తీసుకునే, అప్పుడు మీరు 1 మార్చండి. సి ఫైలు.
మీరు ఆ 1. సి ఫైల్ మరియు తరువాత మిగిలిన మళ్లీ లింక్ ప్రతిదీ, మళ్ళీ కంపైల్ చెయ్యండి అవసరం
తిరిగి కలిసి ప్రతిదీ లింక్.
[విద్యార్థి] మేము lcs50 వ్రాయండి లింక్ చేసినపుడు?
అవును, ఈ lcs50. మీరు ఆ లైబ్రరీలో లింక్ చేయాలని లింకర్ ఆ జెండా సంకేతాలు.
ప్రశ్నలు?
మేము మొదటి ఉపన్యాసం ఆ 5 సెకన్ల కంటే ఇతర బైనరీ పైగా గాన్?
నేను భావించడం లేదు.
మీరు, మేము దాటి చేసిన పెద్ద Os అన్ని తెలుసుకోవాలి
మేము మీరు ఒక ఫంక్షన్ ఇచ్చింది ఉంటే మరియు మీరు,, సామర్థ్యాన్ని కలిగి ఉండాలి
మీరు ఇది దాదాపు, పెద్ద O చెప్పాలి ఉండాలి. లేదా బాగా, పెద్ద O ఆటుపోట్లు.
మీరు విషయాలను అదే నెంబర్ పైగా మళ్ళీ వెతికినా ఉచ్చులు కోసం సమూహం చూడండి అయితే,
>> [విద్యార్థి] n స్క్వేర్డ్ - ఇంట్ J, j <n; Int నేను, i > అది స్క్వేర్డ్ అయి n ఉంటుంది.
మీరు ట్రిపుల్ సమూహం ఉంటే, n cubed ఉంటుంది.
కాబట్టి విషయం ఆ విధమైన మీరు వెంటనే అభిప్రాయపడుతున్నారు విధంగా ఉండాలి.
మీరు ప్రవేశాన్ని విధమైన మరియు బబుల్ సార్ట్ తెలిసిన మరియు విధమైన మరియు ఆ అన్ని విలీనం చేయాలి.
ఆ n స్క్వేర్డ్ మరియు N log N మరియు అన్ని ఎందుకు అర్థం సులభంగా
మనం ప్రధానంగా మీరు ఇచ్చిన పేరు ఒక సంవత్సరం ఒక క్విజ్ న ఉంది అనుకుంటున్నాను ఎందుకంటే
బబుల్ సార్ట్ అభివృద్దిని మరియు "ఈ చర్యను అమలు సమయం అంటే ఏమిటి?", అన్నాడు
మీరు బబుల్ సార్ట్ గుర్తిస్తాయి అయితే, మీరు వెంటనే n స్క్వేర్డ్ చెప్పగలను.
మీరు దీనిని చూడండి అయితే, మీరు కూడా ఇది బబుల్ సార్ట్ గుర్తించడం అవసరం లేదు;
మీరు ఈ ఈ ఈ చేస్తోంది చెప్పగలను. ఈ స్క్వేర్డ్ n.
[విద్యార్థి] మీరు ఆలోచన ఏ కఠినమైన ఉదాహరణలు ఉన్నాయి,
ఇందుకు ఇదే ఆలోచన నచ్చిందా?
>> నేను మీరు ఏ కఠినమైన ఉదాహరణలు ఇస్తుంది భావించడం లేదు.
బబుల్ సార్ట్ విషయం, మేము పాటు దాదాపు వంటి కఠినమైన ఉంది
మరియు కూడా కాలం మీరు అర్థం మీరు శ్రేణి మీద iterating చేస్తున్న, ఆ
అర్రే ప్రతి మూలకం కోసం, ఇది స్క్వేర్డ్ n చేసినది అని అన్నారు.
మనం ఇక్కడే వంటి సాధారణ ప్రశ్నలు ఉన్నాయి - ఓహ్.
జస్ట్ ఇతర రోజు, డౌగ్ పేర్కొన్నారు, "నేను ఒక అర్రే క్రమం చేసే ఒక అల్గోరిథం తున్నారు
"ఓ (లాగ్ n) సమయం! లో n సంఖ్యల"
కాబట్టి మేము ఎలా ఆ అసాధ్యం తెలుసు?
[వినబడని విద్యార్థి ప్రతిస్పందన] >> అవును.
కనీసం, మీరు, అర్రే ప్రతి మూలకం టచ్ ఉంటుంది
కాబట్టి ఇది ఒక వరుస క్రమం అసాధ్యం అనేది -
ప్రతిదీ క్రమబద్ధీకరించనిది క్రమంలో ఉంటే, అప్పుడు మీరు, అర్రే లో ప్రతిదీ తాకడం కావడం చేస్తున్నారు
కాబట్టి ఇది n ఓ కంటే తక్కువ చేయటానికి అసాధ్యం.
[విద్యార్థి] మీరు మాకు n యొక్క O లో దీనిని చేసే ఆ ఉదాహరణకు చూపించింది
మీరు మెమరీ చాలా ఉపయోగిస్తే. >> అవును.
మరియు that's - నేను that's మర్చిపోలేరు - అది విధమైన లెక్కింపు ఉంటుంది?
అయ్యో. ఒక పూర్ణాంకం సార్టింగ్ అల్గోరిథం.
నేను గత వారం గుర్తు అని ఈ ప్రత్యేక పేరు కోసం ఎదురు చూసింది.
అవును. ఈ n యొక్క పెద్ద O విషయాలను సాధించడానికి చేసే రకాల రకాలు.
మీరు ఒక నిర్దిష్ట సంఖ్యలో పూర్ణాంకాల అప్ ఉపయోగించవచ్చు వంటి కానీ పరిమితులు ఉన్నాయి.
ప్లస్ మీరు ఏదో that's క్రమం ప్రయత్నిస్తున్న ఉంటే -
మీ శ్రేణి 012, -12, 151, 4 మిలియన్ ఉంటే
ఆ ఒక్క మూలకం పూర్తిగా మొత్తం సార్టింగ్ నాశనం అన్నారు.
>> ప్రశ్నలు?
[విద్యార్థి] మీరు ఒక పునరావృత చర్య మరియు అది కేవలం పునరావృత కాల్స్ చేస్తే
తిరిగి ప్రకటన లోపల, ఆ, తోక పునరావృత యొక్క
అందువలన, రన్టైమ్ సమయంలో అధిక మెమరీ ఉపయోగించడానికి కాదు
ఒక పరిష్కారం పునరుత్థాన వంటి లేదా కనీసం పోల్చదగిన మెమరీ ఉపయోగించే?
[బౌడెన్] అవును.
ఉండవచ్చు కొంతవరకు నెమ్మదిగా కాదు, కానీ నిజంగా. చేస్తుంది
పునరావృత తోక ప్రెట్టి గుడ్ ఉంది.
స్టాక్ ఫ్రేములు తిరిగి గురించి, లెట్స్ మేము ప్రధాన ఉన్నాయి, అవి
మరియు మేము Int బార్ (Int x) లేదా ఏదైనా కలిగి.
ఈ పరిపూర్ణ పునరావృత క్రియ కాదు, కానీ తిరిగి బార్ (x - 1).
కాబట్టి సహజంగా, ఈ పొరపాట్లు. మీరు బేస్ కేసులు మరియు stuff అవసరం.
కానీ ఇక్కడ ఆలోచన, ఈ పునరావృత తోక ఉంటుంది
అది దాని స్టాక్ ఫ్రేమ్ పరుచుట కొరకు ఉన్నప్పుడు ప్రధాన కాల్స్ బార్ అర్థం.
ఈ స్టాక్ ఫ్రేమ్ లో మెమరీ తక్కువ బ్లాక్ ఉన్నట్లు జరగబోతోంది
దాని వాదన x సూచించదు.
కాబట్టి లెట్స్ ప్రధాన బార్ (100) కాల్ ఏమవుతుంది say;
కాబట్టి x 100 ప్రారంభించాలని అన్నారు.
కంపైలర్ ఈ, ఒక తోక పునరావృత విధి అని శోధిస్తే
బార్, దాని పునరావృత కాల్ బార్ చేస్తుంది అప్పుడు
బదులుగా స్టాక్ ఎక్కువగా పెరుగుతున్న ప్రారంభిస్తారు ఇది ఒక కొత్త స్టాక్ ఫ్రేమ్, తయారీ,
చివరికి అది కుప్ప ఆకస్మికంగా మరియు మీరు segfaults పొందండి
మెమరీ గుద్దుకునే మొదలవుతుంది ఎందుకంటే.
>> బదులుగా తన స్వంత స్టాక్ ఫ్రేమ్ చేయడానికి కాబట్టి, ఇది గుర్తించడం చేయవచ్చు
హే, నేను నిజంగా, ఈ స్టాక్ ఫ్రేమ్ తిరిగి రావాలి ఎప్పుడూ
కాబట్టి బదులుగా నేను 99 తో ఈ వాదన స్థానంలో మరియు తరువాత బార్ పై ప్రారంభించగలరు.
, - (1 x) మరియు తర్వాత మళ్లీ ఇది చేస్తుంది మరియు అది తిరిగి బార్ చేరుకుంటుంది
మరియు బదులుగా ఒక కొత్త స్టాక్ ఫ్రేమ్ తయారు చేసే అది కలిసి 98 దాని ప్రస్తుత వాదన భర్తీ చేస్తుంది
ఆపై బార్ ప్రారంభం తిరిగి వెళ్ళు.
ఆ కార్యకలాపాలను, స్టాక్ ఆ 1 విలువ స్థానంలో మరియు ప్రారంభంలో తిరిగి ఎగరడం,
అందంగా సామర్థ్యాన్ని కలిగి ఉంటాయి.
కాబట్టి కేవలం ఈ పద్దతి ఒక ప్రత్యేక ఫంక్షన్ అదే స్మృతి వాడకం ఉంది
మీరు మాత్రమే 1 స్టాక్ ఫ్రేమ్ ఉపయోగించే, కానీ మీరు దుష్ప్రభావాలు బాధ లేదు ఎందుకంటే
కాల్ ప్రమేయాలు అవసరం యొక్క.
అది ఈ సెటప్ చేయాలి ఎందుకంటే కాలింగ్ విధులు కొంతవరకు ఖరీదైనది కావచ్చు
మరియు teardown మరియు ఈ విషయం.
కాబట్టి ఈ తోక సూత్రం మంచిదే.
[విద్యార్థి] ఎందుకు కొత్త విధానాలను రూపొందించడానికి లేదు?
అది గుర్తిస్తాడు ఎందుకంటే అది అవసరం లేదు.
బార్ పిలుపు కేవలం పునరావృత కాల్ తిరిగి.
కాబట్టి అది తిరిగి విలువ ఏమీ చేయాల్సిన అవసరం లేదు.
ఇది కేవలం వెంటనే తిరిగి వెళుతున్న.
కాబట్టి ఇది దాని స్వంత వాదన స్థానంలో మరియు పైగా ఆరంభమవుతుంది.
మరియు, మీరు తోక పునరావృత వెర్షన్ లేకపోతే,
అప్పుడు మీరు ఈ బార్ వచ్చినప్పడు అన్ని ఈ బార్లు పొందండి
ఇది బార్ వెంటనే తిరిగి ఆ తర్వాత, ఈ ఒక దాని విలువ తిరిగి ఉంది
మరియు ఈ ఒక దాని విలువ తిరిగి, అది కేవలం వెంటనే తిరిగి వెళుతున్న
మరియు ఈ ఒక దాని విలువ తిరిగి.
కాబట్టి మీరు స్టాక్ ఈ విషయాలను అన్నింటిని పాపింగ్ ఈ సేవ్ చేస్తున్న
తిరిగి విలువ ఎలాగైనా తిరిగి అన్ని మార్గం జరిగింది కావడం వలన.
ఎందుకు కేవలం నవీకరించబడింది వాదన మన వాదన స్థానంలో, ప్రారంభించవచ్చు లేదా?
- మీ వంటి ఏదో ఒకటి ఉంటే ఫంక్షన్, తోక పునరావృత లేకపోతే
[విద్యార్థి] ఉంటే బార్ (x + 1). >> అవును.
>> మీరు పరిస్థితిలో ఉంచారు కాబట్టి, మీరు తిరిగి విలువ ఏదో చేయుచున్నారు.
లేదా మీరు తిరిగి 2 పోయినా * బార్ (x - 1).
కాబట్టి ఇప్పుడు బార్ - 2 సార్లు విలువ లెక్కించేందుకు కోసం (x 1), క్రమంలో తిరిగి కావాలి
కాబట్టి ఇప్పుడు, సొంత ప్రత్యేక స్టాక్ ఫ్రేమ్ అవసరం లేదు
మరియు ఇప్పుడు, మీరు ప్రయత్నించండి ఎలా హార్డ్ ఉన్నా, మీరు అవసరం చూడాలని -
ఈ పునరావృత తోక కాదు.
[విద్యార్థి] నేను తోక సూత్రం కోసం ప్రయత్నించవచ్చు ఒక సూత్రం తీసుకుని ప్రయత్నిస్తాయి -
[బౌడెన్] ఆదర్శవంతమైన ప్రపంచంలో, కాని CS50 మీకు లేదు.
తోక సూత్రం పొందటానికి, సాధారణంగా, మీరు అదనపు వాదన ఏర్పాటు
బార్ Y లోకి Int x పడుతుంది పేరు
మరియు y మీరు తిరిగి కావలసిన అల్టిమేట్ విషయం సూచించదు.
(- 1 x), 2 * Y కాబట్టి ఈ మీరు బార్ తిరిగి చూడాలని.
కేవలం కాబట్టి ఒక ఉన్నత స్థాయి మీరు విషయాలు తోక పునరావృత అని అనుకరిస్తే ఎలా.
కానీ అదనపు వాదన -
మరియు తర్వాత చివరికి మీ బేస్ కేసు చేరినపుడు, మీరు Y తిరిగి
మీరు మొత్తం సమయాన్ని మీకు కావలసిన తిరిగి విలువ పొందుపరచబడుతున్న చేసిన ఎందుకంటే.
యొక్క మీరు రకమైన పునరుత్ధాన ఇది చేయడం కానీ పునరావృత కాల్స్ ఉపయోగిస్తున్నాము.
ప్రశ్నలు?
తీగలు ఉపయోగించి విధంగా ఉండవచ్చు అంక గణితానికి గురించి [విద్యార్థి]. >> ఖచ్చితంగా.
పాయింటర్ అంకగణితం.
తీగలను చార్ నక్షత్రాలు ఎందుకంటే తీగలు ఉపయోగించి అది, సులభం
అక్షరాలు, ఎప్పటికీ మరియు ఎల్లప్పుడూ ఒకే బైట్ ఉంటాయి
అందువలన అంక గణితానికి మీరు తీగలను వ్యవహరించే చేసినప్పుడు సాధారణ అంకగణిత సమానం.
లెట్ యొక్క కేవలం చార్ * s = "హలో" అని.
కాబట్టి మేము మెమరీ ఒక బ్లాక్ ఉంటాయి.
మీరు ఎల్లప్పుడూ శూన్య టెర్మినేటర్ అవసరం ఎందుకంటే ఇది 6 బైట్లు కావాలి.
మరియు చార్ * s ఈ శ్రేణి యొక్క ప్రారంభానికి పాయింటు అన్నారు.
కాబట్టి s అక్కడ చూపాడు.
ఇప్పుడు, ఈ, ప్రధానంగా ఏ శ్రేణి ఎలా పని ఉంది
లేకుండా malloc ద్వారా లేదా స్టాక్ మీద కావచ్చు తిరిగి అని యొక్క.
ఏదైనా శ్రేణి, ప్రధానంగా శ్రేణి యొక్క ప్రారంభ ఒక పాయింటర్ గా
మరియు తర్వాత ఏ శ్రేణి ఆపరేషన్, ఏ ఇండెక్సింగ్, కేవలం కొన్ని ఆఫ్సెట్ ఆ శ్రేణి లో అన్నారు.
>> నేను s [3] వంటి ఏదైనా చెప్పండి ఉన్నప్పుడు; ఈ s వెళ్లి సైన్ 3 అక్షరాలు లెక్కింపు ఉంటుంది
కాబట్టి s [3], మేము 0 కలిగి, 1, 2, 3, కాబట్టి s [3] ఈ l చూడండి అన్నారు.
[విద్యార్థి] మరియు మేము s + 3 చేయడం మరియు తర్వాత కుండలీకరణాలు నటుడు అదే విలువ చేరగలిగింది?
అవును.
ఈ * (s + 3) కు సమానంగా చెప్పవచ్చు;
మరియు ఆ ఎప్పటికీ మరియు ఎల్లప్పుడూ సమానంగా మీరు ఏ విషయం.
మీరు బ్రాకెట్ సింటాక్స్ ఉపయోగించడానికి అవసరం లేదు.
మీరు ఎల్లప్పుడూ (s + 3) సింటాక్స్ * ఉపయోగించవచ్చు.
ప్రజలు అయితే, బ్రాకెట్ సింటాక్స్ ఇష్టం ఉంటాయి.
[విద్యార్థి] కాబట్టి అన్ని శ్రేణుల కేవలం వాస్తవానికి గమనికలు ఉన్నాయి.
నేను ఒక కొంచెం తేడా ఉంది Int x [4]; >> [విద్యార్థి] ఆ స్మృతి సృష్టించదు?
[బౌడెన్] కానీ అలా 16 బైట్లు మొత్తం, స్టాక్ 4 ints సృష్టించడానికి అన్నారు.
ఇది స్టాక్ మీద 16 బైట్లు సృష్టించడానికి జరగబోతోంది.
x ఎక్కడైనా నిల్వ చెయ్యబడదు.
ఇది కేవలం విషయం ప్రారంభాన్ని సూచిస్తూ గుర్తు.
మీరు, ఈ ఫంక్షన్ లోపలి అమరిక ప్రకటించింది ఎందుకంటే
కంపైలర్ చేయబోవడం ఏమి కేవలం చరరాశి X యొక్క అన్ని సందర్భాలలో స్థానంలో
ఈ 16 బైట్లు ఉండడానికి ఎంచుకున్న జరిగింది పేరు తో.
S అసలు పాయింటర్ ఎందుకంటే ఇది చార్ * s ఆ చెయ్యలేరు.
తర్వాత ఇతర విషయాలు సూచించడానికి ఉచితం.
x ఒక స్థిరాంకం. మీరు వేరొక శ్రేణి అది పాయింట్ ఉండకూడదు. >> [విద్యార్థి] సరే.
కానీ ఈ ఆలోచన, ఈ ఇండెక్సింగ్, ఇది ఒక సాంప్రదాయ శ్రేణి కావచ్చు సంబంధం లేకుండా ఒకే ఉంది
అది ఏదో లేదా ఒక పాయింటర్ అయితే లేదా ఒక malloced శ్రేణి ఒక పాయింటర్ ఉంది.
నిజానికి, ఇది కూడా ఇదే అని తద్వారా సమానంగా ఉంటుంది.
ఇది నిజానికి పరిధుల లోపల ఏమి అనువాదం మరియు, బ్రాకెట్లలో మిగిలిన
వాటిని కలిసి జతచేస్తుంది, మరియు dereferences.
కాబట్టి ఈ మాదిరిగా చెల్లదు * (s + 3) లేదా s [3].
[విద్యార్థి] మీరు 2 డైమెన్షనల్ శ్రేణుల సూచించే గమనికలు ఉంటుందా?
>> ఇది కష్టం. సాంప్రదాయకంగా, ఏ.
ఒక 2 డైమెన్షనల్ శ్రేణి కొన్ని అనుకూలమైన సిన్టాక్సుతో ఒక 1 డైమెన్షనల్ శ్రేణి
ఎందుకంటే నేను ఎప్పుడు Int x [3] [3], ఇది నిజంగా 9 విలువలతో కేవలం 1 శ్రేణి.
కాబట్టి నేను ఇండెక్స్, కంపైలర్ వాట్ ఐ మీన్ తెలుసు ఉన్నప్పుడు.
నేను x [1] [2], నేను రెండవ వరుసలో కు వెళ్లాలని మీరు అనుకుంటున్నారా తెలుసు, కాబట్టి ఇది మొదటి 3 skip అవకాశముంది, చెప్పినట్టైతే
తరువాత, చాలా ఈ ఒక పరుచుట కొరకు ఆ రెండవ విషయం కోరుకుంటున్నారు.
కాని ఇప్పటికీ కేవలం ఒకే పరిమాణాల శ్రేణి.
కాబట్టి నేను, ఆ శ్రేణి ఒక పాయింటర్ కేటాయించి కోరుకుంటే
నేను Int * p = x;
x యొక్క రకం కేవలం ఉంది -
అది గుర్తు ఎందుకంటే x యొక్క కఠినమైన చెప్పడం రకం మరియు అది అసలైన వేరియబుల్ కాదు
కానీ అది కేవలం ఒక పూర్ణాంకానికి * ఉంది.
x ఈ ప్రారంభాన్ని ఒక పాయింటర్ ఉంది. >> [విద్యార్థి] సరే.
కాబట్టి నేను [1] [2] ప్రాప్తి చేయడానికి చెయ్యలేరు.
నేను, ప్రత్యేక వాక్యనిర్మాణ ఒక పాయింటర్ చాటి ఉంది అనుకుంటున్నాను
Int వంటి హాస్యాస్పదంగా ఏదో (* p [-. పూర్తిగా నమ్మశక్యం నేను కూడా తెలియదు.
కానీ కుండలీకరణాలు మరియు వస్తువులు వంటి గమనికలు ప్రకటించారు కోసం ఒక సింటాక్స్ ఉంది.
ఇది కూడా మీరు ఆ తెలియజేసేలా కాదు.
నా నిజం చెప్పాలంటే దానిని తిరిగి కనిపించాలి.
పాయింట్ ఒక సింటాక్స్ లేకపోతే నేను, తర్వాత అది కోసం కనిపిస్తుంది. కానీ మీరు చూడరు.
మరియు కూడా వాక్యనిర్మాణం మీరు ఉపయోగిస్తే, ప్రజలు అడ్డుపడిన చేయబడుతుంది కాబట్టి ప్రాచీనమైనది.
ఇది వంటి వివిధ పరిమాణాల శ్రేణుల అందంగా అరుదు.
చాలా చక్కని మీరు -
మీరు మాతృక పనులను చేస్తున్నారు ఉంటే సరే,, అరుదుగా మాత్రం కాదు
కానీ సి లో మీరు అరుదుగా బహుమితీయ వ్యూహాన్ని ఉపయోగిస్తాయి కావడం చేస్తున్నారు.
అవును. >> [విద్యార్థి] మీరు ఒక నిజంగా దీర్ఘ శ్రేణి కలిగి చెప్పారు.
>> కాబట్టి కాల్పనిక స్మృతి లో, అన్ని వరుస కనిపిస్తుంది
ప్రతి ఇతర హక్కు తదుపరి మూలకాలను వంటి,
కానీ భౌతిక మెమొరీ లో, దానిని విభజించబడింది ఆ సాధ్యమవుతుంది? >> అవును.
మెమరీ ఎలా పనిచేస్తుందనే వర్చ్యువల్ ఇది వేరు -
కేటాయింపు యూనిట్ 4 లు ఉంటుంది ఒక పేజీ, ఇది
అందువలన ఒక ప్రక్రియ చెప్పినప్పుడు, హే, నేను, ఈ మెమరీ ఉపయోగించాలనుకుంటున్నాను
ఆపరేటింగ్ సిస్టమ్ అది మెమొరీ ఆ చిన్న బ్లాక్ కోసం 4 లు కేటాయించాలని అన్నారు.
మీరు మాత్రమే మెమరీ మొత్తం బ్లాక్ లో ఒక చిన్న బైట్, ఉపయోగించడానికి కూడా
ఆపరేటింగ్ సిస్టమ్ అది పూర్తి 4 లు ఇవ్వాలని అన్నారు.
కాబట్టి ఈ పధ్ధతి నేను కలిగి - ఈ నా స్టాక్ అంటారు లెట్స్.
ఈ స్టాక్ వేరు చేయబడింది. నా స్టాక్ మెగాబైట్ల మరియు మెగాబైట్ల ఉంటుంది.
నా స్టాక్ భారీ ఉంటుంది.
కానీ స్టాక్ స్వయంగా ఒక్కొక్క పేజీ విభజించబడింది ఉంటుంది
ఈ మా RAM అంటారు మేము ఇక్కడ పైగా చూస్తే ఇది లెట్స్,
నేను RAM యొక్క 2 గిగాబైట్ల ఉంటే, ఈ, నా RAM యొక్క జేరోయేత్ బైట్ వంటి వాస్తవ చిరునామా 0
మరియు ఈ ఇక్కడ 2 గిగాబైట్ల అన్ని మార్గం డౌన్.
కాబట్టి ఈ పేజీ ఇక్కడ ఈ బ్లాక్ అనుగుణంగా ఉండవచ్చు.
ఈ పేజీకి ఇక్కడ ఈ బ్లాక్ అనుగుణంగా ఉండవచ్చు.
ఈ ఒక ఇక్కడ ఈ ఒక అనుగుణంగా ఉండవచ్చు.
ఆపరేటింగ్ సిస్టమ్ భౌతికంగా మెమరీ కేటాయించి ఉచిత కనుక
ఏకపక్ష ఏ వ్యక్తి పేజీకి.
మరియు అని ఈ సరిహద్దు వ్యూహం నడిపే జరిగితే,
ఒక వరుస ఈ యొక్క ఎడమ నిర్మాణము మరియు కుడి ఒక పేజీ యొక్క ఈ ఆర్డర్
ఆ శ్రేణి భౌతిక మెమొరీ లో విభజించబడింది అన్నారు.
ప్రక్రియ ముగిసిన తరువాత ఆపై మీరు, ప్రోగ్రామ్ నిష్క్రమించినప్పుడు,
ఈ లను మాసిపోయిన పొందండి మరియు అప్పుడు అది ఇతర విషయాల కోసం ఈ చిన్న బ్లాక్లను ఉపయోగించడానికి ఉచితం.
మరిన్ని ప్రశ్నలు?
[విద్యార్థి] అంక గణితానికి. >> అవును.
స్ట్రింగ్స్, సులువుగా ఉంటాయి కానీ ints వంటి ఏదో చూడటం
కాబట్టి తిరిగి Int x [4];
ఈ వ్యూహం ఉందా లేదా 4 పూర్ణాంకాల యొక్క malloced శ్రేణి ఒక పాయింటర్ కావచ్చు
అది అదే విధంగా చికిత్స జరగబోతోంది.
కాబట్టి శ్రేణుల కుప్ప న [విద్యార్థి] ఉంటాయి?
[బౌడెన్] వ్యూహాలను కుప్ప లేదు. >> [విద్యార్థి] ఓహ్.
>> [బౌడెన్] శ్రేణి యొక్క ఈ రకం స్టాక్ మీద ఉంటుంది
తప్ప మీరు వద్ద ప్రకటించింది - ప్రపంచ వేరియబుల్స్ విస్మరించడం. ప్రపంచ వేరియబుల్స్ ఉపయోగించకండి.
నేను ఒక ఫంక్షన్ యొక్క ఇన్సైడ్ Int x [4];
ఈ శ్రేణి కోసం స్టాక్ లో 4 పూర్ణసంఖ్యలు బ్లాక్ సృష్టించడానికి జరగబోతోంది.
కానీ ఈ malloc (4 * sizeof (Int)); కుప్ప మీద వెళ్ళి అన్నారు.
కానీ ఈ పాయింట్ తరువాత నేను, చాలా చక్కని అదే విధాలుగా x మరియు p ఉపయోగించవచ్చు
మీరు p ఉంచేందుకు చేయవచ్చు గురించి ముందు నేను అన్నాడు మినహాయింపులు కంటే ఇతర.
సాంకేతికంగా వారి పరిమాణాలు కొంతవరకు భిన్నంగా ఉంటాయి, అయితే పూర్తిగా అసంబద్ధం ఉంది.
మీరు నిజంగా వాటి పరిమాణాన్ని ఎప్పుడూ ఉపయోగించవద్దు.
నేను కాలేదు p p [3] = 2; లేదా x [3] = 2;
మీరు ఖచ్చితంగా అదే మార్గాల్లో వాటిని ఉపయోగించవచ్చు.
ఇప్పుడు అంక గణితానికి - అవును.
[విద్యార్థి] మీరు బ్రాకెట్లలో ఉంటే p * చేయడానికి లేదా?
బ్రాకెట్లలో ఒక అవ్యక్త dereference ఉంటాయి. సరే >>.
అసలైన, కూడా మీకు తో చెబుతున్న దాన్ని మీరు బహుమితీయ శ్రేణుల పొందవచ్చు
గమనికలు తో, మీరు ఏమి చేయవచ్చు యొక్క అని పిలవబడు, ఏదో ఉంటుంది, Int ** పేజీలు = malloc (sizeof (Int *) * 5);
నేను ఇవన్నీ మొదటి వ్రాయండి చేస్తాము.
నేను ఒక కోరుకోలేదు.
సరే.
నేను ఇక్కడ ఏమి ఉంది - ఆ పేజీలు [i] ఉండాలి.
కాబట్టి పేజీలు ఒక పాయింటర్ ఒక పాయింటర్ ఉంది.
మీరు 5 Int నక్షత్రాలు యొక్క వ్యూహం సూచించడానికి పేజీలు mallocing చేస్తున్నారు.
కాబట్టి మెమరీలో మీరు స్టాక్ పేజీలు కలిగి
అన్ని గమనికలు తాము ఇవి 5 బ్లాక్స్ యొక్క వ్యూహం సూచించడానికి జరగబోతోంది.
మరియు అప్పుడు ఇక్కడ నేను malloc డౌన్, నేను malloc ఆ వ్యక్తి గమనికలు ప్రతి
కుప్ప మీద 4 బైట్లు యొక్క ఒక ప్రత్యేక బ్లాక్ సూచించడానికి ఉండాలి.
4 బైట్లు కనుక ఈ పాయింట్లు.
మరియు వేరొక 4 బైట్లు ఈ ఒక పాయింట్లు.
>> మరియు వాటిని అన్ని వారి స్వంత 4 బైట్లు సూచించారు.
ఈ నాకు బహుమితీయ పనులను ఒక మార్గాన్ని అందిస్తుంది.
నేను పేజీలు [3] [4], అయితే ఇప్పుడు ఈ ఇదే కాదు వంటి బహుమితీయ శ్రేణుల చెప్పగల్గినవి
బహుమితీయ శ్రేణుల అది అనువాదం ఎందుకంటే [3] [4] x శ్రేణి లోకి ఆఫ్సెట్ ఒక లోకి.
ఈ dereferences p, dereferences తర్వాత, మూడవ సూచిక ప్రాప్తి చేయడానికి
మరియు ప్రాప్తిని - 4 చెల్లని ఉంటుంది - రెండవ సూచిక.
అయితే మేము ఉన్నప్పుడు Int x [3] [4] ఒక బహుమితీయ వ్యూహం ముందు
మరియు మీరు బ్రాకెట్ డబుల్ అది, నిజంగా ఒకే dereference యొక్క
, మీరు ఒక పాయింటర్ అనుసరిస్తున్నారు మరియు తరువాత ఒక ఆఫ్సెట్
ఇది నిజంగా 2D సూచనలు ఉంది.
మీరు 2 ప్రత్యేక గమనికలు అనుసరించండి.
ఈ కూడా సాంకేతికంగా అనుమతిస్తుంది మీరు బహుమితీయ శ్రేణుల కలిగి
ప్రతి వ్యక్తి శ్రేణి వివిధ పరిమాణాలు ఉంటుంది.
నేను కత్తిరించిన బహుమితీయ శ్రేణుల దీనిని ఏమి భావిస్తే
నిజంగా మొదటి విషయం 10 అంశాలను కలిగి ఏదో సూచించడానికి ఎందుకంటే,
రెండవ విషయం 100 అంశాలను కలిగి ఏదో సూచించడానికి కాలేదు.
[విద్యార్థి] మీరు కలిగి గమనికలు సంఖ్య ఏ పరిమితి లేదు
ఇతర గమనికలు సూచించే? >> నం
మీరు Int ***** p కలిగి ఉంటాయి.
తిరిగి పాయింటర్ గణిత - >> [విద్యార్థి] ఓహ్. >> అవును.
[విద్యార్థి] నేను Int *** p కలిగి మరియు ఉంటే నేను dereferencing చేయండి మరియు నేను p * ఈ విలువకు సమానంగా అంటారు,
అది మాత్రమే dereferencing యొక్క 1 స్థాయి చేయండి ఉండబోతుంది? >> అవును.
- నేను గత పాయింటర్ వద్ద సూచించబడిన ఆ విషయం యాక్సెస్ మీరు అనుకుంటే
అప్పుడు మీరు *** p చేయండి. సరే >>.
కాబట్టి ఈ 1 బ్లాక్, మరొక బ్లాక్ కు పాయింట్లు, మరొక బ్లాక్ కు పాయింట్లకు p పాయింట్లు.
మీరు * లేకపోతే అప్పుడు p = ఏదో, అప్పుడు మీరు ఈ మారుస్తుంది
ఇప్పుడు వేరే బ్లాక్ కు మార్చాలి. సరే >>.
>> ఈ malloced ఒకవేళ [బౌడెన్] మరియు, మీరు ఇప్పుడు మెమరీ వెల్లడైంది చేశారు
మీరు ఈ వివిధ సూచనలు కలిగి జరిగే తప్ప
మీరు మీరు దూరంగా విసిరే దోజ్ వన్స్ తిరిగి పొందలేము నుండి.
పాయింటర్ అంకగణితం.
Int x [4]; 4 పూర్ణాంకాల యొక్క వ్యూహం కేటాయించాలని అన్నారు
x అనునది యెరే యొక్క ప్రారంభానికి పాయింటు అన్నారు పేరు.
కాబట్టి నేను x [1] వంటి ఏదైనా చెప్పండి; నేను శ్రేణి రెండవ పూర్ణాంక వెళ్ళండి అర్థం కావాలి,
ఈ ఒకరు.
ఈ ఇంటీజర్ 4 బైట్లు తీసుకుంటుంది కాబట్టి నిజంగా, ఆ శ్రేణి లో 4 బైట్లు ఉంది.
1 యొక్క ఆఫ్సెట్ ఒక నిజంగా ఒక 1 యొక్క ఆఫ్సెట్ అని చెప్పుకుంటారు
యెరే యొక్క రకం వస్తువు యొక్క రెట్లు.
ఈ పూర్ణాంకాల యొక్క వ్యూహం, కాబట్టి అది ఆఫ్సెట్ చేసినప్పుడు అది Int యొక్క 1 సార్లు పరిమాణం చేయడానికి తెలుసు.
ఇతర సింటాక్స్. ఈ * (x + 1) కు సమానమైన అని గుర్తుంచుకోండి;
నేను పాయింటర్ దాన్ని తిరిగి పాయింటర్ నిల్వ ఆ చిరునామా + 1, చెప్పినప్పుడు
ప్లస్ 1 సార్లు పాయింటర్ రకం పరిమాణం.
అయితే x = ox100, అప్పుడు x + 1 = ox104.
మరియు మీరు ఈ దుర్వినియోగం మరియు ఏదో చెప్పగలను చార్ వంటి * c = (చార్ *) x;
మరియు ఇప్పుడు C x అదే చిరునామా అన్నారు.
సి, ox100 సమానంగా అన్నారు
కానీ సి + 1 ox101 సమానంగా అన్నారు
అంక గణితానికి మీరు జోడించడం ఉంటాయి పాయింటర్ బట్టి మారుతుంది నుండి.
కాబట్టి సి + 1, అది సి వద్ద ఉంది, ఇది ఒక చార్ పాయింటర్, కనుక ఇది చార్ యొక్క 1 సార్లు పరిమాణం జోడించడానికి జరగబోతోంది
, ఇది ఎల్లప్పుడూ 1 కానుంది, కాబట్టి మీరు 101 పొందండి
నేను ఇప్పటికీ కూడా 100, x, లేకపోతే, x + 1 104 మాత్రం ఉంటుంది.
[విద్యార్థి] మీరు సి + + 1 మీ పాయింటర్ ముందుకెళ్లేందుకు ఉపయోగించవచ్చా?
అవును, మీరు చెయ్యగలరు.
X కేవలం గుర్తు ఎందుకంటే మీరు x తో అలా కాదు, ఇది ఒక స్థిరాంకం; మీరు x మార్చలేరు.
>> కానీ సి ఒక పాయింటర్ ఉంటుంది, కాబట్టి సి + + ఖచ్చితంగా చెల్లుతుంది మరియు 1 పెంచడం కనిపిస్తుంది.
సి కేవలం ఒక పూర్ణాంకానికి *, అప్పుడు సి + + 104 చేస్తుంది.
+ + చేస్తుంది అంక గణితానికి కేవలం సి + 1 అంక గణితానికి పూర్తి చేస్తుంది ఉన్నాయి.
ఈ నిజానికి విలీనంతో విధమైన వంటి విషయాలను ఎలా చాలా ఉంది -
బదులుగా విషయాలను కాపీలు సృష్టించే, మీరు బదులుగా ప్రసారమవుతుంది -
ఈ కొన్ని వేయండి చూద్దాం - నేను శ్రేణి యొక్క ఈ సగం పాస్ కోరుకుంటే ఇష్టపడుతున్నారు.
లెట్ యొక్క నేను ఒక ఫంక్షన్ లో శ్రేణిని ఈ వైపు పాస్ అనుకున్నారు చెప్పారు.
నేను ఆ ఫంక్షన్ కు చేరుతుందని?
నేను x పాస్ ఉంటే, నేను ఈ చిరునామా ప్రయాణిస్తున్న am.
కానీ నేను ఈ నిర్దిష్ట చిరునామా పాస్ కోరుకుంటున్నాను. నేను ఏమి పాస్ చేయాలి?
[విద్యార్థి] పాయింటర్ + 2?
[బౌడెన్] కాబట్టి x + 2. అవును.
ఈ చిరునామా చేస్తాడు.
మీరు కూడా చాలా తరచుగా ఇది చూస్తారు x [2] మరియు ఆ యొక్క చిరునామా.
కాబట్టి మీరు బ్రాకెట్ ఒక అవ్యక్త dereference ఎందుకంటే అది యొక్క చిరునామా తీసుకోవాలి.
x [2], ఈ బాక్స్ లో అని విలువను సూచిస్తుంది, మరియు అప్పుడు మీరు ఆ బాక్స్ చిరునామా కావాలా
కాబట్టి మీరు చెప్పే & x [2].
తద్వారా మీరు ఏదో సగం జాబితా పాస్ చోట కలిసే విధమైన లో ఎలా సమ్థింగ్ '
మీరు నిజంగా కేవలం PASS & x [2], మరియు ఇప్పుడు చాలా పునరావృత కాల్ సంబంధించినంతవరకు,
నా కొత్త సమాహారం ఉంది మొదలవుతుంది.
చివరి నిమిషం ప్రశ్నలు.
[విద్యార్థి] మేము ఒక ఆంపర్సండ్ చిహ్నం ఉంచండి లేదా లేకపోతే - ఏ అని? >> స్టార్?
[విద్యార్థి] స్టార్. >> సాంకేతికంగా, dereference ఆపరేటర్లు, కానీ - >> [విద్యార్థి] Dereference.
>> మేము స్టార్ లేదా ఒక ఆంపర్సండ్ చిహ్నం ఉంచవద్దు ఉంటే నేను y చెప్పుకోవాలంటే, ఏమి జరుగుతుందనే = x మరియు x ఒక పాయింటర్ గా?
Y రకం ఏమిటి? >> [విద్యార్థి] నేను దాని పాయింటర్ 2 సే చేస్తాము.
మీరు చెప్పడానికి అయితే y = x, ఇప్పుడు x మరియు y పాయింట్ ఇదే కు. >> ఇదే కు [విద్యార్థి] పాయింట్.
మరియు x ఒక పూర్ణాంకానికి పాయింటర్ ఉంది? మీరు గమనికలు కేటాయించలేరు ఎందుకంటే >> ఇది ఫిర్యాదు చేశారు.
[విద్యార్థి] సరే.
మేము బాణాలు వాటిని డ్రా అయినప్పటికీ ఆ గమనికలు గుర్తుంచుకో,
నిజంగా అన్ని వారు స్టోర్ - Int * x - నిజంగా అన్ని x నిల్వ, ox100 వంటిది
ఇది మేము 100 వద్ద నిల్వ బ్లాక్ సూచించే వంటి ప్రాతినిధ్యం పొందుతున్నారు.
నేను చెప్పినప్పుడు మీరు Int * Y = x; నేను y లోకి ox100 కాపీ చేస్తున్నాను,
ఇది మేము కూడా ox100 సూచించే, Y వంటి చూడాలని.
నేను ఉంటే Int i = (Int) x; అప్పుడు నేను ox100 యొక్క విలువ ఏ నిల్వ అన్నారు
అది లోపల, కానీ ఇప్పుడు అది బదులుగా ఒక పాయింటర్ యొక్క పూర్ణాంకం వ్యాఖ్యానించబడింది చెప్పారు.
కానీ మీరు తారాగణం అవసరం లేదంటే అది ఫిర్యాదు కనిపిస్తుంది.
[విద్యార్థి] కాబట్టి మీరు నటింపచేయాలని అర్థం లేదు -
అది y యొక్క x లేదా CASTING Int యొక్క Int కాస్టింగ్ ఉండబోతుంది?
[బౌడెన్] ఏమిటి?
[విద్యార్థి] సరే. ఈ కుండలీకరణాలు తర్వాత అక్కడ ఒక x లేదా అక్కడ ay ఉండబోతుంది?
>> [బౌడెన్] గాని. x మరియు y సమానంగా ఉంటాయి. >> [విద్యార్థి] సరే.
వారు రెండు పాయింటర్లు ఉన్నారు. >> అవును.
[విద్యార్థి] కనుక ఇది పూర్ణాంక రూపంలో హెక్సాడెసిమల్ 100 నిల్వ చేస్తుంది? >> [బౌడెన్] అవును.
కానీ ఇది సూచిస్తుంది వస్తువు యొక్క విలువ.
[బౌడెన్] అవును. >> [విద్యార్థి] కాబట్టి పూర్ణాంక రూపంలో కేవలం చిరునామా. సరే.
మీరు కొన్ని విచిత్రమైన కారణం కోరుకున్నారు, [బౌడెన్] ఉంటే
మీరు ప్రత్యేకంగా గమనికలు వ్యవహరించే మరియు పూర్ణాంకాల తో వ్యవహరించే ఎప్పుడూ కాలేదు
మరియు కేవలం Int * x = 0 లాగా.
అప్పుడు మీరు అంక గణితానికి సంభవించే మొదలవుతుంది ఒకసారి నిజంగా గందరగోళం పొందగలిగిన చేస్తున్నారు.
కాబట్టి వారు నిల్వ ఆ సంఖ్యలు అర్థరహితమని.
మీరు వాటిని వివరించడంలో ముగుస్తుంది కేవలం ఎలా.
నేను, ఒక పూర్ణాంకానికి ఒక పూర్ణాంకానికి * నుండి ox100 కాపీ ఉచిత ఉన్నాను
బహుశా కాస్టింగ్ లేదు కోసం కోప్పడ్డాడు పొందగలిగిన you're - నేను కేటాయించి ఉచిత ఉన్నాను -
నేను ఈ ఏకపక్ష Int * లోకి (Int *) ox1234 లాగ కేటాయించి ఉచిత ఉన్నాను.
కాబట్టి ox123 చెల్లుబాటు అయ్యే ఒక మెమరీ చిరునామా వంటి & పీ మాత్రమే ఉంది.
& పీ చాలా చక్కని ox123 అని ఏదో తిరిగి జరుగుతుంది.
[విద్యార్థి] ఆ హెక్సాడెసిమల్ నుండి దశాంశ రూపం వెళ్ళడానికి నిజంగా చల్లని మార్గం,
మీరు ఒక పాయింటర్ ఉంటే ఇష్టం మీరు ఒక పూర్ణాంకానికి గా నటించారు?
[బౌడెన్] మీరు నిజంగా కేవలం printf వంటి ఉపయోగించి ముద్రించవచ్చు.
లెట్ యొక్క నేను Int y = 100 కలిగి చెప్పారు.
కాబట్టి printf (% d \ n - మీరు ఇప్పటికే తెలుసుకోవాలి వంటి - print that వంటి పూర్ణాంకం,% x.
మేము దానిని హెక్సాడెసిమల్ గా ముద్రించండి చేస్తాము.
కాబట్టి ఒక పాయింటర్, హెక్సాడెసిమల్ వంటి నిల్వ లేదు
మరియు పూర్ణాంకం దశాంశ వంటి నిల్వ చెయ్యబడదు.
అంతా బైనరీ అవుతుంది.
ఇది మేము హెక్సాడెసిమల్ వంటి గమనికలు చూపుతున్నాయి మాత్రమే ఉంది
మేము, ఈ 4-బైట్ బ్లాక్లలో విషయాలను అనుకుంటున్నాను ఎందుకంటే
మరియు మెమరీ చిరునామాలు తెలిసిన ఉంటాయి.
అది BF మొదలవుతుంది, అది స్టాక్ న నిర్మాణము, వంటి మమ్మల్ని.
కాబట్టి ఇది హెక్సాడెసిమల్ వంటి గమనికలు మా వ్యాఖ్యానం ఉంది.
సరే. ఏదైనా చివరి ప్రశ్నలు?
>> మీరు ఏదైనా కలిగి ఉంటే నేను తర్వాత కొంతసేపు ఇక్కడే ఉంటాం.
మరియు ఆ ముగింపు ఉంది.
>> [విద్యార్థి] అవును! [చప్పట్లు]
>> [CS50.TV]