SPEAKER 1: హాయ్ అందరూ. మేము ప్రారంభించడానికి వెళ్తున్నారు. నేను ప్రజలు ఇప్పటికీ వెళుతున్న భావిస్తున్నాము వడపోత ఉండాలి. కానీ సమయం ఆసక్తి, మేము చాలా సమయం ఇక్కడ నుంచి మీరు అబ్బాయిలు పొందండి మేము ఆరంభమవుతుంది చేస్తున్నారు. కాబట్టి CS50 క్విజ్ 0 సమీక్ష స్వాగతం. నెరవేరలేదు చేసిన మీరు ఆ కోసం ఇంకా, మీరు బుధవారం ఒక ప్రశ్న కలిగి. హుర్రే. మీరు ఇంకా అధ్యయనం ప్రారంభించారు ఉండకపోతే లేదా ఈ ఇంకా ఉందని గ్రహించారు లేదు, గత క్విజెస్ మరియు గురించి అన్ని సమాచారం మీ క్విజ్ cs50.net/quizzes ఉన్నాయి. కొన్ని చాలా మంచి విషయాలు అక్కడ ఉంది, 10 గత నుండి గత క్విజెస్ సంవత్సరాల అలాగే సమాచారం ఈ క్విజ్ మరియు విషయాలు గురించి ఆ కవర్ చేస్తుంది. కాబట్టి యొక్క ప్రారంభించడానికి అనుమతిస్తాయి. కాబట్టి మీరు అబ్బాయిలు, మొదటి గుర్తు ఉండవచ్చు తరగతి దావీదు రోజు ఆ దీపాలు న వచ్చింది. కాబట్టి ముఖ్యంగా, ప్రతిదీ వెళ్ళే ఒక కంప్యూటర్ హుడ్ కింద న బైనరీ జరుగుతుంది. బైనరీ అది ధ్వనులు ఏమి అర్థం వంటి, 0 మరియు 1 యొక్క. ఇది రెండు విలువలు కలిగి ప్రాతినిధ్యం చేయవచ్చు. కాబట్టి కేవలం విభాగం మొదటి రోజు వంటి డేవిడ్ ఒక కాంతి ఏట బల్బ్, మన కంప్యూటర్లో దల లేదా 1 అర్థం 0 గా బైనరీ మరియు 1 యొక్క ఆన్ లేదా ఆఫ్. బైనరీ యొక్క బేసిక్స్. ప్రతి చోటు ప్రాతినిధ్యం వహిస్తుంది బేస్ రెండు లో. కాబట్టి మీకు 0 జోడించండి 2 1 అన్ని మార్గం అప్ 2. మీ బైనరీ ఏమి లెక్కించేందుకు దశాంశ, మీరు కేవలం ఈ సమీకరణం అనుసరించండి రకం విషయం. ఆ ప్రాంతాలలో ఏ లో ఒక 1 ఉంటే, మీరు ద్వారా గుణిస్తారు సంసార అది యొక్క మూల వరకు జోడించవచ్చు, మరియు మీరు దశాంశ పొందండి. కాబట్టి ఈ మీరు COUNT ఎలా ఉంది బైనరీ 5. జస్ట్ మేము చేస్తున్న ఏమి వంటి గత స్లయిడ్ ఈ ఎలా మీరు చేస్తాను ఉంది 5 ద్వారా 1 సూచిస్తాయి. అదేవిధంగా, కేవలం మీరు జోడించవచ్చు ఇష్టం మరియు దశాంశ లో వ్యవకలనం లేదా 10 బేస్, లేదా నిజంగా ఏ బేస్, న జోడించవచ్చు మరియు బైనరీ లో వ్యవకలనం. మీరు మీరు ఆశించిన వేటి ఇది అధిక సమానం ఉంటే, రెండు వరకు జోడించవచ్చు 1 కంటే, మీరు ఒక 1, అది ఒక 0 చేయడానికి తీసుకు, మరియు కేవలం, అదనంగా ఆ విధంగా చేయండి వంటి మీరు రెగ్యులర్ తో ఆలోచించే దశాంశ లేదా ఏ ఇతర బేస్. కూల్. నేను, ప్రతిదీ ముందు చెప్పారు వంటి కాబట్టి ఆ మా కంప్యూటర్ యొక్క హుడ్ కింద వెళ్తాడు 0 మరియు 1 యొక్క, లేదా బైనరీ జరుగుతుంది. కాబట్టి మేము వ్యక్తం చేస్తావు, ఉదాహరణకు, లేఖలు లేదా నంబర్లు, లేదా అక్షరాలు? ఆ సమాధానం ASCII ఉంది. ASCII అక్షరాలు మధ్య మాపింగ్ ఉంది మేము సాధారణంగా చూస్తాము ఆ A యొక్క, B యొక్క వంటి ఆంగ్ల భాష, సి యొక్క, తక్కువగా, డాష్లు మరియు ఆ వంటి ఏదైనా. మరియు అది ఒక ASCII విలువ ఆ పటములు. ఒక ASCII విలువ కేవలం ఒక సంఖ్య అని మీ కంప్యూటర్ అర్ధం చేసుకోవచ్చు. మరియు మీరు అదనంగా చేయవచ్చు వలె మరియు సంఖ్యలు తీసివేత, మీరు చేయవచ్చు ASCII విలువలు వాటిని. ఈ ఉదాహరణలో సో వాట్ ఈ ముద్రించాలా ఉంటుంది? అవును, కాబట్టి కేవలం ఒక అంతరిక్ష బి స్పేస్ సి స్థలం డి ఎక్కడ నా మౌస్ వెళ్ళి వచ్చింది? మీరు 65 వద్ద ఒక పూర్ణాంకానికి నిర్వచించలేదు గమనించండి. మరియు మీరు ఉపయోగించి ఆ ప్రింట్ చేసినప్పుడు శాతం సి, ఇది ఒక వంటి కొందరు వివరించినప్పటికీ చేస్తాము పాత్ర మరియు A. ముద్రిస్తుంది అదేవిధంగా, మీరు ప్రకటించవచ్చు అది ఒక చార్ వంటి. మరియు మీరు శాతం ఉపయోగించి దాన్ని ప్రింట్ చేసినప్పుడు సి, ఇది ఆ అనువదించేందుకు చేస్తాము శాతం D. మరియు మీరు ఒక జోడించండి చేయవచ్చు వలె సంఖ్య, మీరు అక్షరాలు ఉంటాయి జోడించవచ్చు ఈ సందర్భంలో ASCII విలువలు. ప్రతిఒక్కరికీ కాబట్టి కొద్దిగా పాయింటర్. 5, ఒక స్ట్రింగ్ వంటి, లేదు నిజంగా 5 సమం. కాబట్టి మేము ఎలా మార్చేందుకు ఉండవచ్చు పూర్ణాంక 5 స్ట్రింగ్ 5? ఏదైనా ఆలోచనలు? అవును. కాబట్టి మేము ఒక స్ట్రింగ్ వంటి 5 కలిగి ఉంటే, మేము 0 తీసివేయడం చేయవచ్చు. మరియు మాకు 5 ఇస్తాము. మరియు అలాగే, మేము ఒక వంటి 5 కలిగి ఉంటే పూర్ణాంక, స్ట్రింగ్ 0 జోడించండి. మరియు మాకు స్ట్రింగ్ 5 ఇస్తుంది. కూల్. ఇప్పుడు ఒక పేరు లెక్చర్ తిరిగి గుర్తుకు అల్గోరిథంలు గురించి మాట్లాడారు. కాబట్టి మేము నిజానికి ఒక కంప్యూటర్ అనుకుంటున్నారు ఎలా ఆసక్తికరమైన పనులు? మీరు, జోడించడం మరియు తీసివేయడం, తెలుసు సంఖ్యలు మరియు ప్రింటింగ్ విషయాలు బయటకు కాదు ఆ ఉత్తేజకరమైన. సాధారణంగా, మేము మా కంప్యూటర్ అనుకుంటే అల్గోరిథం యొక్క రకమైన నిర్వహించడానికి. కొద్దిగా క్లిష్టమైన ఏదో కేవలం సాధారణ అంకగణిత కంటే. ఒక అల్గోరిథం అడుగు సెట్ ద్వారా కేవలం ఒక అడుగు నిర్వహించడానికి ఎలా సూచనలను ఒక నిర్దిష్ట task-- కేవలం ఒక వంటకం ఇష్టపడితే. మీరు మొదటి రోజు గుర్తు ఉండవచ్చు డేవిడ్ మాకు ఒక గది COUNT కలిగి ఉన్న తరగతి ప్రజలు మరియు ఎంత మంది గది ఉన్నాయి. మీరు లెక్కింపు వాడవచ్చు ఒకరి. 1, 2, 3, 4. ఆ సందర్భంలో, ఒక సరళ సమయం అల్గోరిథం. కానీ డేవిడ్ ఒక అల్గోరిథం పరిచయం మీరు గదిలో ఉన్నారు లెక్కించడానికి ప్రతి ఒక్కరూ నిలబడి ఉన్న, మీరు మీ చెప్పటానికి మరో వ్యక్తికి సంఖ్య, ఆ జోడించండి సంఖ్య అప్, మరియు ఒక వ్యక్తి డౌన్ కూర్చుని. మరియు మీరు ఆ పునరావృతం. ఆ అల్గోరిథం యొక్క ఒక రకం వార్తలు. మేము ఎలా సమర్థవంతంగా ఒక విశ్లేషిస్తుంది ఇది సమయం రన్ నా మీద అల్గోరిథం ఆధారపడి ఉంటుంది. కానీ మేము కొద్దిగా మాట్లాడదాము ఆ తరువాత దీని గురించి మరింత. కాబట్టి అన్ని అల్గోరిథంలు కూడా చెయ్యవచ్చు pseudocode లో వ్రాయవచ్చు. Pseudocode కేవలం వంటి ఒక ఆంగ్ల వాక్యనిర్మాణం ప్రాతినిధ్యం ఉపయోగిస్తారు ఒక ప్రోగ్రామింగ్ భాష. ఉదాహరణకు, ఒక వినియోగదారు మేము కోరుకుంటే గోవా నా ఇష్టమైన సంఖ్య ఊహించడానికి, మేము వంటి pseudocode ఉండవచ్చు. ఒక వినియోగదారులు అంచనా పొందండి. అంచనా సరైనదైతే, వాటిని చెప్పండి వారు సరైన, వేరే వాటిని చెప్పండి వారు సరైన లేదు. మరియు pseudocode సులభంగా ఒక మార్గం ఉంది ఒక ఆలోచన లేదా ఒక అల్గోరిథం ప్రాతినిధ్యం. కాబట్టి ఇప్పుడు మేము నిజానికి రాయాలనుకుంటున్నాను ఉండవచ్చు ఈ భాషలో ఆ కంప్యూటర్ అవగాహన కలిగింది. కాబట్టి మేము మా pseudocode రాస్తుంది సోర్స్ కోడ్ కొందరు వివరించినప్పటికీ. ఇప్పటివరకు, సోర్స్ కోడ్ కట్టుబడి ఉండాలి ఒక నిర్దిష్ట వాక్యనిర్మాణం ఒక ప్రోగ్రామింగ్ భాష. ఇప్పటివరకు, CS50 లో, మేము చేసిన ఎక్కువగా సి ఉపయోగించి చేయబడ్డాయి. కాబట్టి ఈ సి సోర్స్ కోడ్ ఉండవచ్చు. తరువాత కోర్సు లో, మీరు రాత్రి వచ్చి ఇతర ప్రోగ్రామింగ్ తో పరిచయం లోకి PHP వంటి భాషలు. లేదా మీరు కూడా, మీరు ఇతర తరగతులను తీసుకోవటానికి ఉంటే జావా, పైథాన్, లేదా OCML చేయండి ఉండవచ్చు. కానీ మా సి కార్యక్రమం భాష లో, ఈ ఉంది మేము సోర్స్ కోడ్ వ్రాయడానికి ఎలా pseudocode అల్గోరిథం నేను ముందుగా వివరించిన. సో ఎలా నిజానికి మీ కంప్యూటర్ చేస్తుంది ఆ అర్థం? నేను మాత్రమే నిజంగా అది ముందు చెప్పినట్టూ సున్నాలు మరియు వాటిని అర్థం. కాబట్టి ఎలా మూలం నుండి పొందడానికి లేదు ఉంటుంది ఏదో కోడ్ అర్థం? Well, మేము ఏదైనా కలిగి ఒక కంపైలర్ అని. మీరు చాలా లో తిరిగి గుర్తు ఉంటే మీ psets, మీరు ప్రోగ్రామ్ యొక్క రకమైన కలిగి ఒక డాట్ సి ఫైలు వ్రాసిన. ఆపై మీరు తయారు టైప్ చేస్తుంది. సో వాట్ తయారు చేస్తోంది? మీరు కంపైల్ తయారు టైప్ చేయవచ్చు మీ కార్యక్రమం someone-- ఎందుకంటే ఎవరైతే మీ p సెట్ రాశాడు; బహుశా David-- ఒక మేకప్ ఫైలు రూపొందించినవారు. మరియు ఆ రన్ తెలుసు చేయడానికి చెబుతుంది మీ కంపైలర్, గణగణమని ద్వని అని, సంకల్ప అప్పుడు వస్తువు మీ సోర్స్ కోడ్ కంపైల్ సున్నాలు మరియు వాటిని ఇది కోడ్ మీ కంప్యూటర్లో అర్థం. కాని ఆ తర్వాత కొద్దిగా, మేము వెళ్తుంది కంపైలర్స్ గురించి లోతు ఎక్కువ. కాబట్టి గుర్తుకు pset 0, where-- అవును, మీరు ఒక ప్రశ్న ఉందా? ప్రేక్షకులు: [వినబడని]? SPEAKER 1: అవును. నేను నిజానికి వారు అనుకుంటున్నాను ఆన్లైన్ ఉండాలి. అవును. ప్రేక్షకులు: [వినబడని] వంటిది? SPEAKER 1: ఇది కాదు. ది cs50.net/quizzes ఉన్నాయి. ప్రేక్షకులు: స్లాష్ క్విజెస్, 2013 స్లాష్ 0 స్లాష్, మరియు కేవలం ద్వారా క్లిక్ క్విజెస్ 2013 మరియు క్విజ్ 0, విభాగం స్లయిడ్లను సమీక్షించండి. SPEAKER 1: అవును, కాబట్టి మీరు అబ్బాయిలు అనుకుంటే ఇది పుల్ అప్ మరియు అది చూసి మీ సొంత కంప్యూటర్, అది చాలా మంచిది. మళ్ళీ సే. ప్రేక్షకులు: [వినబడని]. SPEAKER 1: అవును, [వినబడని] నకిలీ చరరాశి. ఓహ్, అవును? ప్రేక్షకులు: [వినబడని]? SPEAKER 1: లేదు, దాడులు పరీక్షలో కాదు. క్షమించండి, ఆమె ప్రశ్న పరీక్షలో దాడులు. ఇది కాదు. కాబట్టి pset 0, మీరు అబ్బాయిలు ఉండాల్సిందని మొదటి ఉపయోగించి ఏదైనా అమలు. మరియు మేము కొన్ని ప్రాథమిక ప్రోగ్రామింగ్ నేర్చుకున్నాడు మొదటి ఉపయోగించి బిల్డింగ్ బ్లాక్స్. కాబట్టి యొక్క కొన్ని పరిశీలించి తెలియజేయండి ఈ బిల్డింగ్ బ్లాక్స్ ఒక కార్యక్రమాన్ని ఏర్పాటు చేయడానికి. మొదటి బూలియన్ వ్యక్తీకరణ. బూలియన్ వ్యక్తీకరణలు వాటిని మరియు కలిగి 0 లేదా ఏదైనా రెండు విలువలను. ఈ సందర్భంలో, నిజమైన లేదా తప్పుడు, ఆన్ లేదా ఆఫ్, మరియు అవును లేదా సంఖ్య. చాలా సులభమైన, సాధారణ యొక్క ఒక ఉదాహరణ, ఒక బూలియన్ ఉపయోగించే కార్యక్రమం ఇక్కడ వ్యక్తీకరణ అప్. కాబట్టి బూలియన్ వ్యక్తీకరణలు క్రమంలో ఉపయోగము, మేము బూలియన్ ఆపరేటర్లను ఉన్నాయి. ఈ వాడుకోవచ్చు నిర్వాహకులు కొన్ని విలువలు పోల్చడానికి. కాబట్టి మేము కలిగి మరియు లేదా సమాన తక్కువ కంటే ఎక్కువ లేదా కంటే ఎక్కువ సమానంగా లేదా సమానంగా, మరియు కంటే తక్కువ కంటే ఎక్కువ లేదా ఎక్కువ. కానీ ఈ ఆపరేటర్లకు చాలా ఉపయోగకరంగా లేవు మేము వాటిని మిళితం చేయవచ్చు తప్ప పరిస్థితులు. కాబట్టి మీరు అబ్బాయిలు మొదటి నుండి గుర్తు ఉండవచ్చు మరియు మీ p నుండి మేము అమర్చుతుంది పరిస్థితులు వచ్చింది. వారు చెంచాలు వంటి, ముఖ్యంగా, మీ కార్యక్రమాన్ని తర్కం దానిపై ఆధారపడి అమలు ఒక పరిస్థితి ఏర్పడితే. మేము కలిగి పరిస్థితులు కాబట్టి ఒక ఈ కోర్సులో అనేక సార్లు ఉపయోగిస్తారు ఎవరికి ఉంటే, మరియు మిగతా పరిస్థితులు, ఉంటే. ఇక్కడ ఎలా ఒక ఉదాహరణ వార్తలు మీరు ఆ ఉపయోగించవచ్చు. ఎవరికీ మధ్య తేడా కలది కేవలం ప్రకటనలు ఉంటే ఉపయోగించి ఉంటే, మిగతా పద్యాల డౌన్ మార్గం, ఉంటే, మరియు మిగిలిన కలిపి? అవును? ప్రేక్షకులు: [వినబడని]. SPEAKER 1: ఖచ్చితంగా. కాబట్టి నేను కలిగి ఉంటే ఈ డౌన్ అన్ని మార్గం మార్గం, కూడా ఈ పరిస్థితి తిరిగి ఉంటే నిజమైన, ఇది ఇప్పటికీ కొనసాగుతుంది తదుపరి రెండు పరీక్ష. , అయితే ఒక else ఉంటే, ఒక else తో ప్రకటన ఒక నిజమైన తిరిగి ఉంటే, ఇతరులు వేయబడతాయి. గురించి ఏదైనా ప్రశ్నలు? కూల్. సో మీరు ఒక else ఒక ఉంటే-else ఉపయోగించడానికి మీకు తెలిస్తే ఆ ప్రకటన అది మాత్రమే చెయ్యగలరు ఈ కేసులలో ఒకటైన ఉంటుంది. X కంటే తక్కువ 0 ఉంటే కాబట్టి మేము అది, తెలుసు ఖచ్చితంగా అవతరిస్తుంది లేదు 0 కన్నా ఎక్కువ. తదుపరి, మరొక భవనం బ్లాక్ మేము నేర్చుకున్న అని ఉచ్చులు ఉన్నాయి. మేము ఉచ్చులు మూడు రకాల ఉన్నాయి. ఉచ్చులు కోసం, ఉచ్చులు అయితే, మరియు ఉచ్చులు సమయంలో. మరియు సాధారణంగా, మీరు ఉన్నప్పుడు కూర్చో ఏదో వ్రాయడానికి, మీరు నిర్ణయించుకుంటారు ఉంటుంది మీరు ఉపయోగించడానికి అనుకుంటున్నారా మూడు ఏది. సో ఎలా మేము ఇది ఒక నిర్ణయిస్తారు? మేము తెలిస్తే మేము సాధారణంగా లూప్ ఒక ఉపయోగించకూడదని ఎన్ని సార్లు మేము iterate మీరు ఏదో ద్వారా లేదా ఎన్ని సార్లు మేము ఒక పని అనుకుంటే. మేము కొన్ని అవసరం అయితే మేము ఉచ్చులు అయితే ఉపయోగించడానికి పరిస్థితి నడుస్తున్న ఉంచడానికి నిజమని. మరియు మేము చాలా పోలి అయితే డో అయితే, కానీ మేము మా కోడ్ అమలు కావాలి కనీసం ఒక సమయం. దో ఏమైనా అలా అయితే, రెడీ ఎల్లప్పుడూ కనీసం ఒక సమయం అమలు. , అయితే అయితే, అది అన్ని వద్ద ఉంటే అమలు చేయకపోవచ్చు పరిస్థితి సంతృప్తి లేదు. ఆ ఏదైనా ప్రశ్నలు? లూప్ ఒక కాబట్టి నిర్మాణం. మీరు అబ్బాయిలు ఈ సాధించింది. మీరు ప్రారంభించడం. మీరు పరిస్థితి రకమైన కలిగి. కాబట్టి, ఉదాహరణకు, మేము ప్రారంభించడం ఉండవచ్చు కోసం నేను 0 సమానం. నేను కంటే తక్కువ 10 ఉంది. మరియు నేను ++. మేము చేసిన ఆ చాలా సులభమైన ఒకటి. ఒక సమయంలో లూప్, అదేవిధంగా, మీరు కలిగి ప్రారంభ రకమైన కలిగి, పరిస్థితి రకమైన, మరియు నవీకరణ రకమైన. కాబట్టి మేము కూడా లూప్ మా అమలు చేయవచ్చు ఒక సమయంలో లూప్ ఈ ఉపయోగించి. మరియు అలాగే ఒక డో సమయంలో లూప్ తో, మేము కొన్ని ప్రారంభ కలిగి ఉండవచ్చు, , ఏదో అమలు అది అప్డేట్, మరియు అప్పుడు పరిస్థితి తనిఖీ. కాబట్టి ఇప్పుడు పని. మేము కలిసి ప్రతిదీ ఉంచండి. మేము కొన్ని రాయాలనుకుంటున్నాను ఉండవచ్చు ఫంక్షన్ రకం. సాధారణ ఫంక్షన్ మీరు వాటిని ఇప్పటికే చూసిన ప్రధాన ఉంది. ప్రధాన ఒక ఫంక్షన్ ఉంది. ఇది ఒక తిరిగి టైప్ Int కలిగి. ఇది ప్రధాన ఒక ఫంక్షన్ పేరు ఉంది. మరియు వాదనలు, argc మరియు argv ఉంది. కాబట్టి ప్రధాన కేవలం ఒక విధి. మీరు ఉపయోగించిన ఉండవచ్చు ఇతర విధులు, printf-- printf ఒక ఫంక్షన్ ఉంది GetInt, toupper. కానీ వీటిని జరిగే ద్వారా మాకు అమలు లైబ్రరీ రకమైన. మీరు అబ్బాయిలు సహా గుర్తుంచుకుంటే ఈ cs50.h లైబ్రరీ లేదా ప్రామాణిక I / O లైబ్రరీ. అవును, ప్రశ్న? ప్రేక్షకులు: సి లో కేవలం స్వాభావిక ప్రధాన ఏమిటి? ఇది కేవలం రకమైన [వినబడని] డజ్? SPEAKER 1: ప్రశ్న ప్రధాన ఉంటే సి సహజమని. మరియు అవును, అన్ని విధులు ఒక ప్రధాన చర్య. ఇది రకమైన కంప్యూటర్ కోసం అవసరమైన వార్తలు ఎక్కడ ప్రారంభించాలో తెలుసు కోడ్ అమలు. ప్రేక్షకులు: సో మీరు లేదు [వినబడని]? SPEAKER 1: నం ఏదైనా ఇతర ప్రశ్నలు? కూల్. మీరు ఒక ఫంక్షన్ ఉపయోగించవచ్చు కాబట్టి కేవలం మీరు కోసం వ్రాసిన, మీరు కూడా చెయ్యవచ్చు మీ సొంత ఫంక్షన్ వ్రాయండి. ఈ ఎవరైనా వాటిని ఒక ఫంక్షన్ ఉంది వాల్యూమ్ లెక్కించేందుకు వ్రాశారు ఉదాహరణకు ఒక q యొక్క. తిరిగి రకం ఈ సందర్భంలో, ఇక్కడ ఉంది Int, మా ఫంక్షన్ పేరు q మరియు మా పారామితులు జాబితా. మరియు మీరు డేటా వ్రాయడానికి గమనించండి మీరు పారామితి రకం ఉపయోగించడానికి లేదా పనిచేయదని వేరే ఏ రకమైన తెలుసు పారామితి నేను అంగీకరించడం చేయాలి. కాబట్టి, ఈ సందర్భంలో, మనం కావలసిన మా ఇన్పుట్ వంటి పూర్ణాంకం. సో ఎందుకు మేము విధులు వుపయోగించాలని అనుకొనుచున్న? అన్ని మొదటి, సంస్థ కోసం గొప్ప. వారు లోకి మీ కోడ్ విచ్ఛిన్నం సహాయం మరింత రాళ్లను వ్యవస్థీకృత మరియు తయారు సులభంగా చదవటానికి. సాధారణీకరణ. ఈ డిజైన్ మంచిది. మీరు కోడ్ యొక్క ఒక భాగాన్ని చదివిన వెన్ మరియు ప్రధాన విధి, నిజంగా ఉంది నిజంగా దీర్ఘ, అది కష్టం కావచ్చు జరగబోతోంది ఏమి గురించి కారణం. కాబట్టి మీరు విధులు లోకి అది విచ్ఛిన్నం ఉంటే, ఇది చదవడానికి సులభంగా ఉంటుంది. మరియు మళ్ళీ సామర్థ్యం. మీరు కోడ్ యొక్క ఒక భాగం కలిగి ఉంటే చేయబడిన అని లేదా అనేకసార్లు అమలు, బదులుగా ఆ కోడ్ 10 సార్లు మళ్లీ మీ ప్రధాన విధి, మీరు వాటిని అది తిరిగి కావలసిన. ఆపై ప్రతిసారీ మీరు ఉపయోగించడానికి అవసరం కోడ్ యొక్క భాగం, ఫంక్షన్ కాల్. కాబట్టి ఇప్పుడు మేము తిరిగి గీతలు గుర్తు ఉంటే, మేము కూడా, కొన్ని అంశాల గురించి మాట్లాడారు వీటిలో ఒకటి థ్రెడ్డింగ్ ఉంది. థ్రెడ్ బహుళ భావన ఉంది కోడ్ క్రమాలపై అదే సమయంలో అమలు. కాబట్టి డేవిడ్ కలిగి ఉన్న రోజు ఒక తిరిగి అనుకుంటున్నాను మీరు అబ్బాయిలు సంఖ్య ఆఫ్ లెక్కించడానికి గదిలో ప్రజలు. ముఖ్యంగా, ఏమి జరుగుతోందో మీరు అబ్బాయిలు అన్ని పట్టాయి ప్రత్యేక దారాలను నడుస్తున్న. మరియు ఆ దారాలను కలిసి రావడం జరిగింది సమాధానం రకమైన పొందడానికి. అదేవిధంగా, స్క్రాచ్ లో, మీరు ఎప్పుడు బహుళ స్ప్రిట్స్, మీరు వాటిని ఒక పిల్లి మరియు ఒక కుక్క ఉంటుంది. మరియు వారు ఏకకాలంలో ఉంటుంది వారి సొంత స్క్రిప్ట్స్ అమలు. ఆ త్రెడింగ్ యొక్క ఒక ఉదాహరణ. మరియు ఇతర భావన, అని స్క్రాచ్ పరిచయం సంఘటనలు. మరియు ఈవెంట్స్ ఉన్నప్పుడు బహుళ భాగాలు మీ కోడ్ ప్రతి ఇతర కమ్యూనికేట్. మీరు ఉపయోగించినప్పుడు స్క్రాచ్ లో, ఈ ఉంది ప్రసార నియంత్రణ మరియు నేను ఎప్పుడు బ్లాక్స్ స్వీకరించండి. కూడా, ప్రాబ్లం సెట్ 4 లో, మేము చూసిన అలాగే ఈవెంట్స్ కొద్దిగా. మీరు అబ్బాయిలు ఉపయోగించిన ఉండవచ్చు Gevent లైబ్రరీ. మరియు ఒక ఫంక్షన్ ఉంది waitForClick మీరు వేచి ఉన్నాయి యూజర్ క్లిక్ చేయండి. మరియు మీ క్లిక్, ఈ సందర్భంలో, ఉంటుంది క్లిక్ ఘటనా మరియు వేచి మీ ఉంది ఈవెంట్ హ్యాండ్లర్. కూడా, మీ psets అంతటా నడుస్తున్న మరియు మీ psets పని, మీరు తాకదు ఉండవచ్చు ఈ ఆదేశాలను కొన్ని. ఈ మీరు టైప్ చేసిన ఏమి ఉంది మీ టెర్మినల్ విండో లేదా సంసార విండో ఆ, మీ గ్రా మార్చు న అప్ చూపిస్తుంది ముఖ్యంగా మీ కంప్యూటర్లో నావిగేట్. కాబట్టి ఉదాహరణకు, LS జాబితా ఒక డైరెక్టరీ యొక్క కంటెంట్లను. డైరెక్టరీ ఒక కొత్త ఫోల్డర్ సృష్టిస్తుంది చేయండి. CD, మార్పు డైరెక్టరీ. RM, తొలగించడం, ఒక ఫైల్ తొలగిస్తే లేదా కొన్ని డైరెక్టరీ. ఆపై డైరెక్టరీ తొలగించడానికి ఒక డైరెక్టరీ తొలగిస్తుంది. ప్రేక్షకులు: [వినబడని]? SPEAKER 1: అవును, ఖచ్చితంగా. క్షమించండి, ప్రశ్న మీరు ఉంటే ఈ పెట్టటం సూచిస్తాయి మోసగాడు షీట్ మీద. ఇది ఉపయోగపడుతుంది. మీరు గది ఉంటే, మీరు ఉంచవచ్చు. ఇది కూడా తగినంత కేవలం సాధారణంగా మంచి వార్తలు మీరు దీనిని ఉపయోగించడానికి ఉన్నప్పుడు ఎందుకంటే గుర్తుంచుకోవడానికి మీరు అనుకోవచ్చు కేవలం అది జ్ఞాపకం చేశారు. మీ జీవితంలోని చాలా సులభం చేస్తాము. నేను మీ ప్రశ్నకు సమాధానం లేదు? కాబట్టి ఇప్పుడు, మేము ఒక చిన్న బిట్ మాట్లాడుకున్నారు గ్రంధాలయాలు గురించి క్లుప్తంగా. కానీ రెండు ప్రధాన వాటిని మనం చేసిన ఇప్పటివరకు కోర్సులో ఉంటాయి ఉపయోగించి ప్రామాణిక I / O మరియు CS50. విషయాలు ఏ విధమైన చేర్చబడ్డాయి ప్రామాణిక I / O లైబ్రరీ లో? అవును, ఇప్పటివరకు మేము printf ఉపయోగించి. CS50 లో, మేము GetInt ఉపయోగించారు చేసిన మరియు GetString. మరియు డేటా రకం స్ట్రింగ్ కూడా జరుగుతుంది ఈ CS50 లైబ్రరీలో ప్రకటించాలని. మేము గురించి లోతుగా కొద్దిగా ఎక్కువ మాట్లాడదాము ఎలా గ్రంధాలయాలు పని మరియు ఎలా వారు మీ మిగిలిన కోడ్ సంకర్షణ. కానీ ఆ రెండు ప్రధాన కలవి మేము ఇప్పటివరకు తో కలసినప్పుడు చేశారు కోర్సు. రకాలు. ఈ ఎంత గుర్తు బాగున్నాయి ప్రతి రకం ఎలా లేదా సూచించబడుతుంది అనేక బైట్లు రకం ప్రతి requires-- పూర్ణాంకానికి 4 బైట్లు; చార్ 1 బైట్. ఫ్లోట్ 4 బైట్లు. ఒక డబుల్ ఏమిటి? ప్రేక్షకులు: [వినబడని]. SPEAKER 1: అవును, కాబట్టి ఒక ఫ్లోట్ కానీ పరిమాణం రెట్టింపు. ఏం ఒక దీర్ఘ గురించి? ప్రేక్షకులు: [వినబడని]. SPEAKER 1: సరే. ఒక దీర్ఘ ఏమిటి? ప్రేక్షకులు: [వినబడని]. SPEAKER 1: అవును, ఒక పూర్ణాంకానికి రెట్టింపు. అవును. ప్రేక్షకులు: [వినబడని]. SPEAKER 1: లాంగ్ [వినబడని]. ఆపై ఒక లాంగ్ లాంగ్ ఆ రెట్టింపు. ప్రేక్షకులు: ఏ. ఒక దీర్ఘ కేవలం ఒక పూర్ణాంకానికి ఉంది. ఇది నిర్మాణం మీద ఆధారపడి ముందు [వినబడని] మరియు Int అదే పరిమాణం కలిగి ఉంటాయి. [వినబడని]. SPEAKER 1: సో ఒక దీర్ఘ మరియు ఒక పూర్ణాంకానికి ఒకటే. ఆపై సుదీర్ఘ కాలం డబుల్ పూర్ణాంకానికి ఉంది. కూల్. ఆపై, చివరి రకానికి ఏమిటి? ప్రేక్షకులు: పాయింటర్. SPEAKER 1: అవును, కాబట్టి మేము నేర్చుకున్న గమనికలు గురించి కొద్దిగా. సంబంధం లేకుండా ఒక పాయింటర్ ఉంది ఏమి ఇది ఆలోచన పై ఒక చార్ స్టార్ కావచ్చు లేదా ఒక పూర్ణాంకానికి star-- ఇది ఎల్లప్పుడూ ఒక పాయింటర్ 4 బైట్లు ఉంది. గురించి ప్రశ్నలు? అవును? ప్రేక్షకులు: [వినబడని]? SPEAKER 1: సో ఒక దీర్ఘ మరియు ఒక పూర్ణాంకానికి ఉన్నాయి ఈ CS50 పరికరంలోని అదే. ప్రేక్షకులు: ఉపకరణం వున్నాయి మార్చుకోగలిగిన. SPEAKER 1: అవును. కాబట్టి అప్పుడు ఒక లాంగ్ లాంగ్ డబుల్ ఒక పూర్ణాంకానికి ఉంది. ప్రేక్షకులు: 32 బిట్ ఉంది? SPEAKER 1: 32 బిట్, అవును. ప్రేక్షకులు: సో [వినబడని]? SPEAKER 1: అవును, అది లేనప్పుడు స్పష్టంగా, మీరు చెప్పే 32 బిట్ భావించాలి. ప్రేక్షకులు: ఇది ఏదో చెబుతా ఒక ఊహిస్తూ వంటి ఉపకరణం వలె నిర్మాణం. 64 బిట్, మాత్రమే విషయాలు ఆ మార్పు longs మరియు గమనికలు ఉన్నాయి. వారు రెండు [వినబడని]. SPEAKER 1: అవును? ప్రేక్షకులు: ప్రశ్న. ఆచరణలో క్విజ్లు ఒకటి కాబట్టి, అది ఒక Int సైన్ చేయని గురించి అడుగుతుంది. కాబట్టి ఎలా లెక్కిస్తారు ఒక పూర్ణాంకానికి [వినబడని] నుండి? SPEAKER 1: ఎన్ సైన్ చేయని కూడా 4 బైట్లు. కానీ ఒక సంతకం గురించి వివిధ ఏమిటి Int మరియు ఒక Int సైన్ చేయని? ప్రేక్షకులు: [వినబడని]. SPEAKER 1: రైట్. వన్ ప్రతికూల విలువలను సూచిస్తాయి చేయవచ్చు. కానీ ఎలా ఆ ఏమి చేస్తుంది? ప్రేక్షకులు: [వినబడని]. SPEAKER 1: అవును, అది 1 ఆదా బిట్ సైన్ సూచించడానికి. సంతకం ఒక బిట్ ఉంది సైన్ సూచిస్తుంది. మరియు పేరు తెలియని కేవలం అన్ని పాజిటివ్ ఉంది. ప్రేక్షకులు: సరే. కాబట్టి మీరు ఒక డబుల్ అని చెప్పటానికి ఒక ఫ్లోట్ రెండుసార్లు పరిమాణం? SPEAKER 1: డబుల్ రెండుసార్లు ఉంది ఒక ఫ్లోట్ యొక్క పరిమాణం, అవును. ప్రేక్షకులు: ఒక పాయింటర్ చేస్తుంది ఎలా ఒక దీర్ఘ కాలం [వినబడని]? SPEAKER 1: ఎలా కాబట్టి ప్రశ్న ఒక లాంగ్ లాంగ్ పాయింటర్ ఎలా అని మాత్రమే నాలుగు బైట్లు చేసినప్పుడు ఉంది దాని 8 బైట్లు ఒక లాంగ్ లాంగ్. కాబట్టి ఒక పాయింటర్ ఉంది ఏమి గుర్తు ముఖ్యంగా, చాలా బేస్ విలువ వద్ద. ప్రేక్షకులు: [వినబడని]. SPEAKER 1: అవును, కాబట్టి ఒక పాయింటర్ కేవలం మెమరీ స్థానం. కనుక ఇది ఎంత ఖాళీ పట్టింపు లేదు ఆ పాయింటర్ కు సూచిస్తుంది. ఇది మాత్రమే ట్రాక్ 4 బైట్లు కావాలి ఆ మెమరీ స్థానం యొక్క. ఏదైనా ఇతర ప్రశ్నలు? కూల్. గత విషయం నేను కలిగి ప్రామాణిక అవుట్పుట్ ఉంది. మీరు తరచుగా వాటిని ఉపయోగించాలి మీరు గుర్తు చేసే తగినంత. మేము ఉపయోగించినప్పుడు కానీ ఈ ఉంది printf, ఉదాహరణకు. మరియు మేము ఈ కలిగి placeholders కలిగి ఫార్మాట్ సంకేతాలు పిలిచారు. కాబట్టి Int శాతం సి చార్ శాతం నేను, మరియు మేము కూడా శాతం d ఉపయోగించవచ్చు. ఇది అదే విషయం. కానీ, సాధారణంగా, లో CS50 మేము శాతం నేను ఉపయోగించడానికి ప్రయత్నించండి. ఫ్లోట్ శాతం ఎఫ్. దీర్ఘ కాలం శాతం LD మరియు స్ట్రింగ్ శాతం లు. అదేవిధంగా, మేము కొన్ని ఉపయోగించి పరిష్కరించగలుగుతున్నాము ఈ ఎస్కేప్ సన్నివేశాలు. ఉదాహరణకు, బాక్ స్లాష్ n లకు కొత్త లైన్ కోసం. ఈ మీరు ఫార్మాటింగ్ చేసినప్పుడు కేవలం ఉంది ముద్రణ F మీ కోడ్. అవును? ప్రేక్షకులు: శాతం d ఏం ఉంది? SPEAKER 1: సో ప్రశ్న శాతం d ఏమి ఉంది? శాతం d ints కోసం ఉంది. శాతం d మరియు శాతం నేను ఒకటే. ప్రేక్షకులు: మధ్య తేడా ఏమిటి బాక్ స్లాష్ n మరియు బాక్ స్లాష్ R? SPEAKER 1: సో ప్రశ్న ఏమిటి ఎదురుదెబ్బ n మరియు మధ్య తేడా ఎదురుదెబ్బ R? నేను బాక్ స్లాష్ R అనుకుంటున్నాను is-- ప్రేక్షకులు: సో బాక్ స్లాష్ R కేవలం సూచిస్తుంది లైన్ ప్రారంభానికి తిరిగి నిజానికి ఒక కొత్త లైన్ వెళుతున్న లేకుండా. సో మీరు ఒక బాక్ స్లాష్ R ప్రింట్ మరియు మీరు ఉంటే లైన్ ప్రారంభానికి తిరిగి వెళ్ళడానికి అప్పుడు మీరు తిరిగి రాస్తుంది మరింత stuff ప్రింట్ ఇప్పటికే stuff ఆ [వినబడని]. అయితే, N అసలైన కొత్త వెళ్తాడు లైన్ మరియు [వినబడని] వెళ్తాడు. SPEAKER 1: బాగా, ఏ ఇతర ప్రశ్నలు? అన్ని కుడి. నేను దానిని ఆఫ్ చేతితో వెళుతున్న Continue అవుతుంది డాన్. [చప్పట్లు] DAN: అన్ని righty. నేను మరొక వెడల్పు గురించి మాట్లాడటం అవుతారు అని తరగతి నుండి ఆలోచనలను పరిధి సుమారు వారం రెండు ప్రతినిధి మరియు వారం మూడు ప్రారంభంలో ఆఫ్ మొదలు కేవలం ఒక మార్గం ఉంది దీనిలో కాస్టింగ్ తో ఒక నిర్దిష్ట రకం విలువ వంటి చికిత్స వేరే రకం విలువ. కాబట్టి మేము అక్షరాలు తో చేయవచ్చు ints, ints కు తేలియాడే మరియు దీర్ఘ longs రెట్టింపు. ఈ విషయాలు అన్ని విధాలుగా ఉపయోగించవచ్చు కొన్ని సంఖ్యా విలువ చికిత్స యొక్క కొన్ని ఇతర మైనస్ చార్ సంఖ్యా విలువ. కొన్ని సమస్యలు ఈ తో ఉన్నాయి కాబట్టి మీరు వేసిన ఉన్నప్పుడు వస్తుంది కోర్సు, ints కు ఫ్లోట్ వంటి విషయాలు. కాబట్టి ఈ కొద్దిగా అదృష్టము ఉంది. మేము 1.31 అని ఒక ఫ్లోట్ కలిగి. మేము 10,000 ద్వారా గుణిస్తారు. మరియు తర్వాత మేము ఒక పూర్ణాంకానికి గా ప్రింట్. ఈ కృషిని ఏమి చేస్తుంది? 10,000 సార్లు 1.31. కాబట్టి 13,000 అనుకుంటారో? ప్రేక్షకులు: నేను 10,000 భావిస్తున్నాను. DAN: సో నేను 10,000 గుణించడం చేస్తున్నాను నేను కాస్టింగ్ చేస్తున్నాను ముందు. ప్రేక్షకులు: ఓహ్. అక్కడ ఒక 9 కాదు మరియు కొన్ని 0 సంఖ్యలు? డాన్: మీరు కొన్ని విచిత్రమైన అంకెలు ఉండవచ్చు. కాబట్టి కుడి, అది 1.3 సార్లు 10,000 ఉంది. కాబట్టి ఆ 13,000 ఉంది. మరియు ఈ అదనపు అసహజ ప్రేక్షకులు: 13,100. డాన్: 13,100. రాబ్ ధన్యవాదాలు. మరియు ఈ అదనపు weirdness-- ఈ 9,9-- కేవలం ఈ కాస్టింగ్ ఎందుకంటే ముగించారు డౌన్ ఇక్కడ చుట్టుముట్టే ఇది ఉండకూడదు. అవును. ప్రేక్షకులు: కాస్టింగ్ జరుగుతుంది ఏదైనా తర్వాత? DAN: ఎందుకంటే నేను అది ముద్రణలో ఈ కలిగి ఇది ముందు ఈ గుణకారం చేస్తుంది ఈ కాస్టింగ్ లేదు. ప్రేక్షకులు: [వినబడని]. డాన్: నేను, అది మొదటి నటించారు అనుకుంటున్నాను అవును, 10,000 ఇది ఉంటుంది. ఏదైనా? కూల్. కాబట్టి ఈ 13.099 ఉంది. ఎందుకు ఈ ఏర్పడుతుందా? ఖచ్చితంగా చెప్పలేని. తేలియాడుతున్న సరైనవి కావు. వారు మాత్రమే సంఖ్యలు ప్రాతినిధ్యం చేయవచ్చు ముఖ్యమైన సంఖ్యలు కొన్ని సంఖ్య. మేము 8 SIG అత్తి పండ్లను ముద్రించాలా చేస్తే ఈ ఫ్లోట్, మేము ఒక రకం పొందండి అగ్లీ చూస్తున్న సంఖ్య. ఎందుకంటే మరియు ఆ 1.31 ఖచ్చితంగా కాదు సాధారణ ద్వారా ప్రాతినిధ్యం యంత్రం రెండు శక్తులు. అది సన్నిహిత తీసుకొని ముగుస్తుంది కాబట్టి ఇది ముగుస్తుంది, అంచనా ఒక కొద్దిగా తక్కువ ఉండటం. సమంజసం? సరే. ఇప్పుడు స్విచ్ యొక్క వేరొక మార్గం నియత ప్రకటనలు అన్ని చేయడం మేము ఒక వేరియబుల్ ఉంది పట్టించుకోనట్లు. కాబట్టి ఈ ప్రత్యేక ఉదాహరణ, మేము ఉన్నాము వినియోగదారు నుండి ఒక పూర్ణ పొందడానికి. మరియు తర్వాత మేము వద్ద చూస్తున్న ఆ పూర్ణాంక ఏమిటి. బహుశా, అది సంఖ్య వార్తలు ఒక మరియు నాలుగు మధ్య. ఆ మేము కోరుతూ ఏమి ఉంది. సో మీరు ఒక స్విచ్ చేయండి వేరియబుల్ పేరు. అప్పుడు మీరు వీలైనంత కేసులు ఏర్పాటు అది కావచ్చు కట్టారు. కాబట్టి ఒక సందర్భంలో, అది తక్కువ చెప్పాలి. ఆపై మీరు పొందడానికి బ్రేక్ స్విచ్ పరిస్థితి అలా మీరు కొనసాగించడాన్ని లేదు. తదుపరి సందర్భంలో కాబట్టి కేసు రెండు మరియు సందర్భంలో three-- అది సందర్భంలో రెండు అయితే అది డౌన్ పడిపోతుంది దానితో గా చూస్తాడు కోడ్ మొదటి లైన్ అది ఒక విరామం చూస్తాడు వరకు మూడు కేసు. కాబట్టి కారణం మీకు కేసు ఒక పొందండి మాత్రమే ప్రింట్ తక్కువ నేను ఎందుకంటే ఇక్కడ ఈ విరామం ఉంటుంది. నేను చేస్తే, సే, ఈ break-- నిర్లక్ష్యం నేను ఈ breakaway-- విసిరారు ఉంటే ఇది తక్కువ ప్రింట్ చేస్తుంది, మరియు అప్పుడు అది చేస్తాను మధ్యలో ప్రింట్ మరియు అప్పుడు అది బ్రేక్ చేస్తుంది. విరామాలు ఒక ముఖ్యమైన భాగంగా ఉన్నాయి కాబట్టి పరిస్థితులు మారి వారు అక్కడ ఉండాలి. వివరంగా చెప్పింది లేని ఏ కేసులు అప్రమేయంగా పరిష్కరించే మరియు స్విచ్ కేసు వేసిన చేయాలి. ప్రేక్షకులు: సో 1, 2, 3, మరియు 4 లేదా ఉంటుంది? DAN: N ఉండాలనే విలువలు. అవును. అవును? ప్రేక్షకులు: సో మీరు కలిగి ఉన్నప్పుడు [వినబడని]? డాన్: మీరు తక్కువ తర్వాత ప్రింట్, మరియు అది మధ్యలో ప్రింట్, మరియు అప్పుడు అది విచ్ఛిన్నం చేస్తుంది. ప్రేక్షకులు: ఎందుకు అది ప్రింట్ చేస్తుంది మధ్యలో ఉంటే [వినబడని]? డాన్: కేసు కింద ప్రతిదీ విరామం కింద పడిపోతుంది ముందు. కాబట్టి కేసు ఒక ముద్రణ కింద కేసు ఒకటి ఈ క్రింది ముద్రణ ఉంది. అవును? ప్రేక్షకులు: [వినబడని]? DAN: సో ఈ సంఖ్య కేవలం ఒక నిర్దిష్ట ఉంది విలువ ఈ వేరియబుల్ కుడి, పట్టవచ్చు? ఆ సమంజసం లేదు? అవును. ప్రేక్షకులు: [వినబడని]? డాన్: అవును, కేసు రెండు ప్రింట్ చేస్తుంది మధ్య మరియు తరువాత విడిపోయారు. ప్రేక్షకులు: [వినబడని]? డాన్: నేను ఏ భావిస్తున్నారా? ఏం ఇతర డేటా రకాల మీరు మారవచ్చు? ప్రేక్షకులు: మీరు మారవచ్చు ఏ డేటా రకాల. కానీ అది మాత్రమే అక్షరాలు పైగా ఏదైనా అర్థం మరియు ints వంటి విషయాలను ఎందుకంటే మీరు ఒక పాయింటర్ మారే చేస్తుంటే నిజంగా, అర్ధవంతం లేదు అది కూడా వీలు ఉంటే, లోడ్లు మారే మీరు ఎందుకంటే ఫ్లోటింగ్ పాయింట్, అలా PRECISION లో, మీరు నిజంగా చెప్పమంటారా ఏమైనప్పటికీ ఆ చేయాలనుకుంటున్నారా. కాబట్టి అందంగా చాలా, కేవలం ints మరియు ఆ వంటి అక్షరాలు మరియు stuff. డాన్: మీరు స్పష్టమైన ఉన్నప్పుడు అవును, అది వార్తలు మీకు తెలిసిన విలువలు, నేను అనుకుంటున్నాను, ఉంటుంది ఒక స్విచ్ వాస్తవానికి ఉపయోగపడుతుంది. గుడ్? సరే. స్కోప్ ప్రకటించిన ఆ పరిధిలో ఉంది వేరియబుల్ విస్తరించింది. నేను కలిగి కోడ్ యొక్క ఈ చిన్న భాగం కాబట్టి, ఇది లోపాలను పూర్తి అవుతుంది. మరియు కారణం నేను ఈ Int ప్రకటించుకుంది నేను లూప్ ఈ పరిధిలో. ఆపై నేను ప్రస్తావించడానికి దీనికై నేను లూప్ ఆస్కారం ఆ వెలుపల. కాబట్టి ప్రాథమికంగా, మీరు పరిధిని గురించి ఆలోచించవచ్చు మీరు ప్రకటించాలని ఏదైనా గిరజాల జంట కలుపులు సమితి లోపల మాత్రమే ఆ గిరజాల జంట కలుపులు లోపల ఉంది. మరియు మీరు ప్రయత్నించండి మరియు ఆ వేరియబుల్ ఉపయోగిస్తే ఆ గిరజాల జంట కలుపులు బయట, మీరు చేస్తాము కంపైలర్ నుండి లోపం. అవును? ప్రేక్షకులు: సో ఈ ఒక పని లేదు? డాన్: అవును ఈ పని లేదు. తీగలను. స్ట్రింగ్ ఒక చార్ * ఉంది. వారు అదే ఉన్నారు. వారు కేవలం అక్షరాలు గమనికలు ఉన్నాయి. మరియు మీరు ఏ తీగలను అంతం చేయాలి కేవలం ఇది బాక్ స్లాష్ సున్నా తో ఒక సి సమావేశం. ఇది NULL టెర్మినేటర్ అంటారు. మరియు శూన్య రాజధాని N, రాజధాని U, రాజధాని ఎల్, రాజధాని L-- అదే కాదు NULL టెర్మినేటర్. ఈ ఒక పాయింటర్ ఉంది. ఈ ఒక పాత్ర. వారు చాలా వైవిధ్యంగా ఉంటాయి. ఇది గుర్తుంచుకోండి. ఇది బహుశా, క్విజ్ ఉంటుంది. నేను క్విజ్ చూడలేదు. అవును? ప్రేక్షకులు: సో నల్ పాయింటర్, సే? డాన్: అవును. ప్రేక్షకులు: [వినబడని] చేస్తుంది? DAN: చెప్పుకోవాలంటే, malloc అని ఉన్నప్పుడు మీరు పొందుటకు తగినంత మెమరీ లేదు సంసార మీరు కోరుతూ చేస్తున్న పరిమాణం, malloc శూన్య చూపిస్తుంది. ఒక ఫంక్షన్ ఉంది చేసినప్పుడు ఇది ప్రాథమికంగా, వార్తలు ఒక పాయింటర్ తిరిగి చేయాలో, మీరు NULL ఎందుకంటే వ్యతిరేకంగా తనిఖీ చెయ్యాలి నల్ ఒక అందమైన good-- ఉంది ఇది విధమైన, చెత్త విలువ ఏమిటి. ఇది చాలా గమనికలు వెళ్ళి ఒక సున్నా ఉంది. ఎప్పుడు మీరు ఒక ఫంక్షన్ కాల్, ఒక పాయింటర్ తిరిగి. మీరు ఉండాలి చెక్ అనుకుంటున్నారా చూడాలని ఆ పాయింటర్ NULL కాదని ఖచ్చితంగా నల్ చాలా సాధారణ ఎందుకంటే. ఇది ఒక చెత్త తిరిగి విధమైన ఉంది. ఏదో కుడి వెళ్ళలేదు కనుక, కేవలం బదులుగా NULL తిరిగి. ప్రేక్షకులు: [వినబడని]? డాన్: అవును, మరియు ఈ ఉంది. ప్రేక్షకులు: [వినబడని]? DAN: ఈ గా స్పెల్. ఇది NULL టెర్మినేటర్ వార్తలు. ఇది చిన్న N-U-L-L ఉంటే వార్తలు మీరు స్పెల్లింగ్ చేస్తున్నారు. ప్రేక్షకులు: నేను వెళ్ళింది తిరిగి మరియు అది పరీక్షించారు. మరియు మీరు ఒక ఫ్లోటింగ్ పాయింట్ ఉంచాలి ప్రయత్నించండి ఉంటే ఒక స్విచ్ లోకి విలువ, అది మీరు అరుస్తుంటారు చేస్తాము మాట్లాడుతూ, ప్రకటన వ్యక్తీకరణ అవసరం పూర్ణాంక రకమైన. డాన్: అక్కడ మీరు వెళ్ళండి. కానీ అవును, ప్రశ్న మళ్ళీ ఏమి ఉంది? ప్రేక్షకులు: [వినబడని]? డాన్: సో రాజధాని N, రాజధాని U, రాజధాని ఎల్, రాజధాని L ఒక వాస్తవ సి విషయం. ఇది నల్ పాయింటర్ మరియు రెడీ మాత్రమే వంటి చికిత్స సాధ్యం. మీరు ఎప్పుడూ ప్రయత్నించండి మరియు అక్షరక్రమ లేదు NULL పాత్ర మరియు ఏ చూడండి ఈ కంటే ఇతర మార్గం. అవును? ప్రేక్షకులు: సో మాక్స్ చార్ తిరిగి లేదా గమనికలు ఏదో చేస్తాను అదే ఫంక్షన్ రూపొందించు [వినబడని] గా? ప్రేక్షకులు: సో మీరు సూచిస్తూ ఉంటాయి GetChar నుండి చార్ మాక్స్ తిరిగి, లేదా సంసార అది? ప్రేక్షకులు: అవును. ప్రేక్షకులు: అవును, సాధారణ కాబట్టి అన్ని ఆ విషయాలు పదం కాపలాదారుడు విలువలు. కాబట్టి GetInt నుండి Int మాక్స్ తిరిగి వంటి మరియు GetChar నుండి చార్ మాక్స్, అది వార్తలు అన్ని హక్కు వంటి రావలసిన ఈ విషయాలు మాకు తిరిగి ఉంటాయి ఏదో తప్పు జరిగింది. గమనికలు, మేము కేవలం కలిగి జరిగే ఈ కాపలాదారుడు విలువ అని అందరికీ మీద అంగీకరిస్తాడు. మరియు ఈ మీరు తిరిగి విషయం విషయాలు తప్పు. కాబట్టి చార్ మాక్స్ మేము ఉపయోగించి ఏమి ఉంది ఏదో ప్రాతినిధ్యం NULL లేదా GetChar ఇష్టపడుతున్నారు. ప్రేక్షకులు: మీరు GetChar టెస్టింగ్ చేస్తున్నారు చేస్తే, మీరు నిరర్థక చాలు కాలేదు? ఒక తేడా చేస్తుంది? డాన్: మీరు నిరర్థక తనిఖీ కాలేదు. మీరు ఎందుకంటే చార్ మాక్స్ తనిఖీ కలిగి ఇష్టం ఫంక్షన్ నుండి తిరిగి విలువ ఉంది ఒక పాత్ర ఒక పాయింటర్ కాదు. అవును? ప్రేక్షకులు: ఈ ప్రశ్న అడుగుతుంది స్ట్రింగ్ పొడవు కోసం. NULL పాత్ర ఉన్నాయి లేదు? DAN: నం మరియు ఆ ఎలా స్ట్రింగ్ పొడవు నిజానికి వార్తలు ఇది గుండా వెళుతుంది ఎందుకంటే ఆపడానికి తెలుసు పాత్రల మీ శ్రేణి వరకు అది ఒక NULL పాత్ర చూస్తాడు. మరియు అది అన్ని లాంటిది కుడి, నేను పూర్తయింది. ప్రేక్షకులు: [వినబడని] అయిదు? డాన్: హలో ఐదు ఉంటుంది. YEP. కాబట్టి శ్రేణుల కొనసాగుతున్నాయి మెమరీ బ్లాక్లు. వారు చెప్పి, తక్షణ యాక్సెస్ కర్లీ, అర్రే యొక్క పేరు మరియు అప్పుడు మీరు వెళ్ళడానికి కావలసిన సూచిక కలుపులు, , వారు ద్వారా సున్నా నుండి ఇండెక్స్ చేస్తున్నారు 1 మైనస్ శ్రేణి యొక్క పొడవు. మరియు వారు రకం ప్రకటించిన చేస్తున్నారు మీరు నిల్వ చేస్తున్న విషయం అర్రే, అర్రే యొక్క పేరు, మరియు అప్పుడు సంసార పరిమాణంలో ఆ శ్రేణి ఉంది. కాబట్టి ఈ పొడవు యొక్క ఒక చార్ శ్రేణి ఈ విలువలు కలిగి ఆరు. అవును? ప్రేక్షకులు: [వినబడని]? డాన్: అవును. ప్రేక్షకులు: [వినబడని]? డాన్: మీరు వెళ్తున్నారు ఏమి ఉంటే అర్రే లోకి ఇప్పటికే చేసిన. కాబట్టి మీరు బదులుగా ఈ పేర్కొనవచ్చు అవకాశమున్నందున, సే, చార్, సంసార పేరు మీ శ్రేణి ఖాళీగా బ్రాకెట్లలో కర్లీ సమానం, ఉంది H కామా E కామా L కామా L కామా బ్రేస్ ఓ కామా NULL పాత్ర మరియు వంకర కలుపు. కూడా ఒక ప్రకటన పని చేస్తుంది. ప్రేక్షకులు: [వినబడని]? DAN: అప్పుడు మీరు కలిగి ఉండాలి పరిమాణం ఇప్పటికే చేసిన. ప్రేక్షకులు: [వినబడని]? డాన్: అవును. అన్ని righty. కమాండ్ లైన్ వాదనలు మార్గం యూజర్ నుండి ఇన్పుట్ పొందడానికి ప్రధాన వాదనలు. ప్రధాన రెండు వాదనలు పడుతుంది. ప్రవర్తిస్తే ఆ వాదనలు సంఖ్య కమాండ్ లైన్ మరియు ఒక పాటు ఆమోదించేది స్ట్రింగ్ vector లేదా ఒక స్ట్రింగ్ శ్రేణి వాదనలు అన్ని. కాబట్టి నేను, సే, వంటి ఒక ఫంక్షన్ అని ఉంటే 1 స్పేస్, 2 స్థలం, మూడు ఒక డాట్, argc 4 ఉంటుంది. మరియు argv 0 అవ్ట్ ఒక డాట్ ఉంటుంది. Argv1 1 ఉంటుంది. argv2 2 argv3 ఉంటుంది ఉంటుంది 3, నిర్దిష్ట సందర్భంలో. అవును? ప్రేక్షకులు: [వినబడని]? DAN: అర్రే చివరి మూలకం శ్రేణి పొడవు argc, ఎందుకంటే ప్లస్ argb ఒకటి, గత మూలకం నల్ పాయింటర్ ఉంది. అది argc ప్లస్ 1. నేను కేవలం అన్నారు, అది ఆ సందర్భంలో కాబట్టి 0 argv అవుతుంది బయటకు ఒక డాట్ ఉంది. argv 1 1 argv2 3 3 2 argv ఉంది. ఒక పెద్ద ఇది argv 4, argc కంటే శూన్య ఉంటుంది. ఆ నల్ పాయింటర్ ఉంది. అవును. స్ట్రింగ్ ఎందుకంటే ఆ వార్తలు ఒక చార్ స్టార్ పాయింటర్ ఉంది. కాబట్టి ఇది అదే రకం ఉండాలి. అవును? ప్రేక్షకులు: రెండు ప్రశ్నలు. ఒక కాబట్టి, తేడా మధ్య ఏమి వార్తలు ఒక రకం కంటే ఇతర ఈ మరియు GetString వినియోగదారు ఇంజిన్ లో? మరియు రెండు, దానిలోని నిల్వ ఉంది మీ ఇటీవలి మెమరీ? కాబట్టి వంటి, GetString చేస్తాను [వినబడని] ఉంటుంది? డాన్: ఇది ఎక్కడ నిల్వ చేయబడుతుంది? ఇది నిల్వ నేను ఎక్కడ తెలియదు. ప్రేక్షకులు: సో, వాస్తవానికి, మీరు ఎలా ఏ తెలుసు మీరు వాదనలు యొక్క కాల్ పని స్టాక్ లో నిల్వ చేయబడతాయి? కాబట్టి argc మరియు argv వాదనలు ప్రధాన ఉంటాయి మరియు వారు స్టాక్ ఉన్నాయి, లేదా నిజంగా కేవలం మీరు ఏమనుకుంటున్నారో పైన స్టాక్ ప్రారంభం. ఇతర భాగంగా ఏమిటి ప్రశ్న? ప్రేక్షకులు: సో వాట్ వార్తలు [వినబడని]? DAN: అవును, అది కేవలం వేరే మార్గం యూజర్ నుండి ఇన్పుట్ పొందడానికి. ఈ ఒక యొక్క కొద్దిగా మరింత సమర్థవంతంగా మరియు ఇది స్క్రిప్ట్స్ కోసం handier మీరు ఎందుకంటే మీ ప్రధాన వాదనలు తరలిస్తారు ఫంక్షన్ వేచి ఉండటం కంటే వినియోగదారులు మీరు ఏ వినియోగదారులు లేకపోతే. ప్రేక్షకులు: అవును, తీగలను పొందండి [వినబడని] ఉంటుంది. ఇది మీరు అవసరం stuff నిల్వ ఉంటుంది. డాన్: అవును? ప్రేక్షకులు: [వినబడని]? డాన్: అవును, argv 0 ఎప్పుడూ కలిగి డాట్ ఫంక్షన్ కాల్ స్లాష్. అవును? ప్రేక్షకులు: [వినబడని]? డాన్: అవును, వాదనలు ప్రతి ఉన్నాయి NULL పాత్ర ముగిసింది వారు ఎందుకంటే తీగలు ఉంటాయి. ప్రేక్షకులు: [వినబడని]? డాన్: అవును, argv argc ఒక నల్ పాయింటర్ ఉంది. ప్రేక్షకులు: [వినబడని]? డాన్: అవును. అవును, సారీ. ప్రేక్షకులు: సో [వినబడని]? డాన్: మీరు కలిగి ఉంటే ప్రశ్న కాబట్టి కమాండ్ లైన్ డాట్, 2, 1 అవుట్ డాట్ స్లాష్ చేస్తాను కమాండ్ లైన్ సంఖ్య వాదనలు రెండు లేదా అది మూడు ఉంటుంది? ప్రేక్షకులు: నేను అది కాదు అనుకుంటున్నాను నిజంగా పట్టింపు. నేను OH, మీరు పాస్ లేదు, చెప్పడానికి అవకాశం ఏ ఆదేశ పంక్తి వాదనలు, సహజంగా, మీరు ఫంక్షన్ అని. కాబట్టి నేను విని మినహాయించాలని ఉంటాయి కమాండ్ లైన్ నుండి ఫంక్షన్ అంతే అయినప్పటికీ వాదనలు argv చేర్చారు. DAN: కానీ అది test-- గా ఉంటే yeah-- మరియు కూడా మీరు ఏదో చెప్పుకోవాలంటే argc 3 సమానం వంటి, మీరు సురక్షితంగా నిలబడి ఉన్నారు. అవును? ప్రేక్షకులు: [వినబడని]? డాన్: నేను బదులుగా ఈ కాల్ అనుకుంటున్నారో argc మరియు స్ట్రింగ్ argv బ్రాకెట్లలో కానీ అదే రకాల ఉంచింది మరియు కేవలం అని ఒక వంటి వివిధ వాటిని ఏదో అండ్ బి, అది ఇప్పటికీ పని చేస్తుంది? మరియు అది ఇప్పటికీ పని చేస్తుంది, మీరు కేవలం ఉంటుంది బదులుగా argc-- ఉపయోగించి మీరు ఒక అండ్ బి ఉపయోగించడానికి ఇష్టం. అవును? ప్రేక్షకులు: [వినబడని]? డాన్: ప్రశ్న కాబట్టి GetString ఉంది కుప్ప మెమరీ కొట్టుకు వెళ్లి GetString చార్ * ఎందుకంటే. ఇది ఎందుకంటే కుప్ప మెమరీ నిల్వ అసలు లోపల ఇప్పుడు malloc పిలుపు GetString యొక్క అమలు. సరే, వెళ్లడానికి. సెక్యూరిటీ. కాబట్టి నిజంగా సురక్షితమైనది, మీరు ఏ ఆధారపడి ఒక మరియు మీరు ఏ ఎవరూ యాక్సెస్ అనుమతిస్తుంది మీ సమాచారం, ఇది ఎందుకు ప్రతి ఒక్కరూ తమ సొంత బైక్కులకు వారి స్వంత ఆపరేటింగ్ వ్యవస్థలు, వారి మొదటి నుండి కార్యక్రమాలు, మరియు స్పష్టంగా ఏ ఇతర యంత్రాలు కనెక్ట్ లేదు ఇంటర్నెట్ ద్వారా. కాబట్టి కంప్యూటర్లు అసురక్షిత. వారు నిజంగా ఉంటాయి. మేము ఇతర వ్యక్తులు విశ్వసించాలని ఉన్నాయి. మరియు సెక్యూరిటీ ఆలోచన మీరు ఉన్నాము అని మొత్తం పరిమితం ప్రయత్నిస్తున్న మీరు అవసరమైన విశ్వాసం. మరియు మార్గాల ఒక మీరు అలా గూఢ ద్వారా. క్రిప్టోగ్రఫీ, ముఖ్యంగా, ఉంది మేము సీక్రెట్స్ ఉన్నాయి. కొన్నిసార్లు మేము మా రహస్యాలు పాస్ పాటు ద్వారా, సే, ఇంటర్నెట్ లేదా ఇతర విషయాలు. మరియు మేము ప్రజలు వద్దు ఈ రహస్యాలు తెలుసు. కాబట్టి మేము ఒక మార్గం లోకి మా రహస్యాలు గుప్తీకరించడానికి మేము ఎవరూ దొరుకుతుందని చేయవచ్చు ఆశిస్తున్నాము. కాబట్టి మేము used-- ఈ class-- కోర్సు ద్వారా సీజర్ సాంకేతికలిపి వంటి విషయాలు మరియు రెండు చాలా, చాలా ఇవి [వినబడని], విషయాలు ఎన్క్రిప్ట్ యొక్క అసురక్షిత మార్గాలు. వారు బయటకు దొరుకుతుందని సులభం ఏమి చేస్తున్నామో వారు మరియు మీ రహస్యాలు ఏమిటి. వాస్తవ ప్రపంచంలో ఎక్కువ ఉపయోగించే సంక్లిష్టమైన ఎన్క్రిప్షన్ పథకాలు. మరియు మేము లోకి అందదు కంటే ఎక్కువ. డీబగ్గింగ్. GDB ఉత్తమ ఉంది. నేను మళ్ళీ ఈ ఒత్తిడి వెళుతున్న. GDB అన్ని సమయం ప్రతి ఉపయోగించండి సమయం మీరు ఒక సమస్య. GDB లో ఉపయోగపడతాయి ఆ ఆదేశాలు ఉన్నాయి మీరు ఒక అనో పాస్, విచ్ఛిన్నం సంఖ్య, ఒక ఫంక్షన్ పేరు, తప్పనిసరిగా ఇక్కడ మీ కోడ్ లో మీరు ఆపడానికి కావలసిన, మరియు నియంత్రణ తీసుకోవాలని చెయ్యగలరు. ప్రింట్ ఒక వేరియబుల్ పడుతుంది మరియు అవుట్ ముద్రిస్తుంది ఆ వేరియబుల్ వద్ద ఉండే వస్తువు మీ మరణశిక్ష పాయింట్. తర్వాత మీ మరణశిక్ష కదులుతుంది ఒక అడుగు పాటు. మరియు ఒక ఫంక్షన్ లోపల సోపానాలు మీ అమలు. ఇతర విషయాలు ఎంత ఉంది, నడపబడుతున్నాయి మీరు నిజంగా మీ కోడ్ అమలు. కొనసాగించు అవసరమైన అన్ని చర్యలు తీసుకుంటుంది తదుపరి బ్రేక్ పాయింట్ చెయ్యడానికి. మరియు అనేక, అనేక ఇతరులు ఉన్నాయి. వాటిని వెదకండి. వారు గొప్ప ఉన్నాము. అవును? ప్రేక్షకులు: [వినబడని]? డాన్: అవును, ఒక డీబగ్గర్ ఇది. కాబట్టి ఒక డీబగ్గర్ ప్రోగ్రామ్ ఆ మీరు మీ కార్యక్రమాన్ని డీబగ్ అనుమతిస్తుంది. ఇది బగ్స్ కనుగొనగల ఒక కార్యక్రమం కాదు మీరు అయితే ఆ గొప్ప విషయం. మరియు శోధన నాకు చివరి ఉంది. మేము మాట్లాడారు శోధన రకాల కాబట్టి ఈ తరగతి లో సరళ శోధన,, ఇది మీరు ప్రతి ద్వారా అనిపించే కేవలం ఉంది శోధన స్థలం యొక్క మూలకం, ఒక ఒక సమయంలో మూలకం, మీరు కనుగొనడానికి వరకు మీరు లేదా మీరు చేరుకోవడానికి వరకు చూస్తున్నారా మీ శోధన స్థలం యొక్క ముగింపు ఇది వద్ద మీరు కనుగొనడానికి అని చెప్పడానికి అభిప్రాయపడుతున్నారు మీరు వెతుకుతున్న ఆ మూలకం. మరియు ఈ, ఉత్తమ వద్ద స్థిరంగా సమయం పడుతుంది ఇది 1 0 మరియు చెత్త సరళ వద్ద n యొక్క 0 ఇది సమయం. అవసరం బైనరీ శోధన, అనైతిక అంశాలు. మీరు మీ అంశాల మధ్య వెళ్ళండి, చూడండి మీరు చూస్తున్న మూలకం మూలకం కంటే పెద్ద లేదా చిన్న ఉంది మీరు మధ్య వద్ద ఉన్నట్లు. ఇది పెద్ద పని, మీరు క్రింద చెప్తారు మీ శోధన స్పేస్ మీ ఉంది ప్రస్తుత నగర, మధ్యతరగతి, మరియు మీరు ప్రక్రియ పునఃప్రారంభించుము. ఇది చిన్న ఉంటే, మీరు చెప్పే చూడండి అవును, ఇంకేంటి వాట్ అని? ప్రేక్షకులు: [వినబడని]? డాన్: అవును. బోధించాడు చేయబడింది ఆ విధమైన ఏ విధమైన తరగతి పరీక్ష కోసం ఫెయిర్ గేమ్ ఉంది. [నవ్వు] డాన్: మీరు కలిగి లేరు వాస్తవం సమస్య సెట్ కోసం దీన్ని, ఇది ఫెయిర్ వార్తలు పరీక్ష కోసం ఆట. ప్రేక్షకులు: మేము వెళ్ళి ఎలా ఆలోచన డాన్: ఇది దొంగలకి చేయబడుతుంది. SPEAKER 2: అసలైన కోడ్ [వినబడని] study.cs50.net ఉంది. మీరు ఆచరణలో సమస్య చూడండి చేస్తే ల విలీనంతో విధమైన పేజీ లో study.cs50.net కోడ్ ఉంది విధమైన విలీనం అమలు కోసం. కాబట్టి మీరు అమలు లేదు అది మిమ్మల్ని టునైట్. కానీ మీరు బదులుగా అర్థం చేయడానికి కంటే కేవలం ఇది గుర్తుంచుకోవడం. ప్రేక్షకులు: [వినబడని]? SPEAKER 2: విలీనం విధమైన పేజీ study.cs50.net ప్రాక్టీస్ ఉంది మీరు ద్వారా క్లిక్ చేస్తే, సమస్య సమస్య చాలా చివరిలో ఉంది ఒక కలిసిపోయినా ఇది పరిష్కారం, విధమైన అమలు. కానీ నిర్ధారించుకోండి మీరు అర్థం కేవలం ఇది గుర్తుంచుకోవడం కంటే లేదా దానిని డౌన్ కాపీ. ప్రేక్షకులు: మరియు ఒక సంపూర్ణ చెల్లుబాటు పరీక్షల సమస్య ఉంటుందని ఇక్కడ లాగ జాబితా ఉంది. ఈ జాబితాను తర్వాత లాగా ఏమిటి ఎంపికలు విధమైన ఒక అడుగు లేదా చొప్పించడం విధమైన లేదా సంసార. జాబితాలో ఒకటిగా పూర్తి మళ్ళా. మీరు చవిచూస్తారు ముగుస్తుంది లేదు కాబట్టి కూడా కోసం కోడ్, మీరు అర్థం చేసుకోవాలి అది జరగబోతోంది ఎలా తెలుసు తగినంత ఈ శ్రేణి సవరించుట వుంటుంది. DAN: ఆ నాకు ఉంది. [చప్పట్లు] LUCAS: హే ప్రతి ఒక్కరూ. నా పేరు లుకాస్ ఉంది. నేను అన్ని సూత్రం గురించి మాట్లాడటానికి వెళుతున్న మేము నేర్చుకున్న రకాల, మరియు ఒక అన్ని గమనికలు కొద్దిగా. సిద్ధమేనా? అన్ని కాబట్టి మొదటి సూత్రం. ఆ చెప్పటానికి అర్థం ఏమిటి ఒక ఫంక్షన్ పునరావృత ఉంది? ప్రేక్షకులు: పిలుస్తుంది. LUCAS: సరే, అవును, కూడా కాల్స్. కాబట్టి ఉదాహరణకు, ఈ చిత్రంలో ఇష్టపడుతున్నారు. ఇది లోపల చిత్రాన్ని వంటిది ఒక చిత్రాన్ని మరియు అందువలన న. కాబట్టి ఉదాహరణకు, మీరు డాన్ గా దగ్గర చేయవచ్చు ఆ బైనరీ శోధన గురించి మాట్లాడుతున్నాను. ఇది ఒక మార్గం బైనరీ శోధన పునరావృత మీరు వాస్తవం ఉంది అనేక కనుగొనేందుకు ప్రయత్నిస్తున్న. కాబట్టి మీరు మధ్య వెళ్ళండి. అక్కడ సంఖ్యలు ఉంటే ఆపై మీరు తనిఖీ ఎడమ మరియు కుడి. ఆపై మీరు సంఖ్య కనుగొనేందుకు ఉంటే ఎడమవైపు చేస్తాడు, అది సేమ్ మళ్ళీ శోధన చేయడం వంటి విషయం కానీ కేవలం జాబితా ఎడమ. అది ధ్వనులు ఎలా సో ఆ లాగా పునరావృత ఉంది. మీరు అబ్బాయిలు పునరావృత ఎందుకు అలా ఆ వార్తలు విలీనంతో విధమైన పరిష్కారం. OK, కాబట్టి ఇక్కడ ఒక ఉదాహరణ ఉంది. కాబట్టి యొక్క నేను ఎంచుకోవడానికి కావలసిన సే 1 నుండి n అన్ని సంఖ్యలు. నేను తెలుసుకుంటారు చేయవచ్చు n యొక్క మొత్తం సంఖ్య n ప్లస్ లేదా మైనస్ 1 1 వరకు ఉంది. కానీ, నేను n 1 మైనస్ వద్ద చూస్తే ప్లస్ లేదా మైనస్ 2 ప్లస్ 1, అదే వార్తలు చేసి సంఖ్యలు వంటి విషయం n కు మైనస్ 1 అప్. నేను సమాన మొత్తం మొత్తం చెప్పగలను లేదా మైనస్ 1 యొక్క n ప్లస్ మొత్తం సమానం. ఆ సమంజసం లేదు? నేను కూడా ఏదో వుంటుంది ఆ ఇది, బేస్ కేసు అని అప్ సంఖ్యల మొత్తం సున్నా సున్నా ఉంటుంది. అందుకే వెంటనే సంఖ్యను పొందడానికి వంటి సున్నా, నేను లెక్కింపు ఆపడానికి. ఆ సమంజసం లేదు? కాబట్టి ఇక్కడ ఎలా ఒక ఉదాహరణ వార్తలు నేను అమలు చేయవచ్చు. కాబట్టి నేను కొన్ని ఈ చర్య. ఆ పూర్ణాంకం n పడుతుంది. N ఉంటే కాబట్టి ఇక్కడ నేను మొదటి తనిఖీ తక్కువ లేదా సున్నా సమానం. కాబట్టి అది సున్నా తక్కువ లేదా సమానం ఉంటే నేను మా బేస్ కేసు ఇది సున్నా తిరిగి. లేకపోతే, నేను తిరిగి చేయవచ్చు N ప్లస్ సంఖ్యలు మొత్తం నుండి లేదా మైనస్ ఒకరు. సమంజసం? సరే. ఇక్కడ అది కనిపిస్తోంది ఏమిటి. మీరు 2 సమానం మొత్తాన్ని కలిగి 2 ప్లస్ 1 మొత్తం. మరియు 1 యొక్క కొన్ని ప్లస్ 1 0 ఇది 0 మొత్తం. సమంజసం? మేము స్టాక్ చేస్తే మీ ఈ కార్యక్రమానికి ఇది కనిపిస్తోంది ఏమిటి. మొదటి, మేము ప్రధాన చర్య. ఆపై ప్రధాన విధి మొత్తం 2 అని. ఆపై మొత్తం 2 ఓహ్, చెప్పడానికి అన్నారు, మొత్తం 2 2 ప్లస్ ఒకటి మొత్తం సమానం. కాబట్టి నేను స్టాక్కు 1 మొత్తానికి జోడించండి. మరియు 1 మొత్తానికి మొత్తం కాల్ అన్నారు 0, ఇది కూడా చేర్చవచ్చు అన్నారు స్టాక్కు. అవుతున్నారని ఈ వాటిని అప్పటి ప్రతి మరొక పైన తిరిగి ఇతర వాటిని కొనసాగించడాన్ని చేయవచ్చు ముందు. కాబట్టి ఉదాహరణకు, ఇక్కడ, 0 మొత్తం, మొదటి, 0 తిరిగి అన్నారు. ఆపై 1 మొత్తం ఎంచుకోండి. అప్పుడు 1 మొత్తానికి అన్నారు 2 మొత్తానికి 1 తిరిగి. చివరకు, 2 మొత్తానికి అన్నారు ప్రధాన 3 తిరిగి. ఆ సమంజసం లేదు? ఇది ఎలా అర్థం నిజంగా ముఖ్యమైన వార్తలు స్టాక్ పని మరియు ప్రయత్నించండి ఇది అర్ధమే ఉంటే చూడండి. OK, కాబట్టి క్రమబద్ధీకరించేందుకు. ఎందుకు, ముఖ్యమైన అమర్చిన మొదటి అన్ని యొక్క? ఎందుకు మేము జాగ్రత్త పడాలి? ఎవరైనా? నాకు ఒక ఉదాహరణ ఇవ్వండి? అవును? ప్రేక్షకులు: [వినబడని]. LUCAS: సరే, అవును. కాబట్టి మీరు మరింత సమర్ధవంతంగా శోధించవచ్చు. ఒక మంచి మార్గం. కాబట్టి, ఉదాహరణకు, మేము చాలా ఉన్నాయి విషయాలు, నిజానికి, మా జీవితాలను ఆ క్రమబద్ధీకరించబడతాయి. ఉదాహరణకు, నిఘంటువులు. ఇది అన్ని చాలా ముఖ్యమైన వార్తలు ఆర్డర్ రకమైన పదాలు మనం సులభంగా యాక్సెస్ చేయవచ్చు. కాబట్టి అతను చెప్పాడు జరిగినది ఏమిటి. మీరు మరింత సమర్ధవంతంగా శోధించవచ్చు. అది ఒక కలిగి ఉంటుంది ఎలా హార్డ్ యొక్క థింక్ పదాలు లో ఇవి నిఘంటువు యాదృచ్ఛిక క్రమంలో. మీరు చాలా చక్కని చూడండి ఉంటుంది ప్రతి ఒక్క పదం మీకు కనుగొనేందుకు వరకు మీరు వెతికే పదం. మీరు కూడా Facebook ఉపయోగించి ఉంటే, ఎప్పుడు మీరు మీ స్నేహితులు వద్ద చూస్తున్న, మీరు ఉన్నాము ఫేస్బుక్ పెట్టే చూడటానికి వెళ్లి మీ దగ్గరగా స్నేహితుడు వాటిని పైన వార్తలు మీరు చాలా మాట్లాడటానికి లేదు. మీరు దిగువ అన్ని మార్గం వెళ్ళి ఉంటే మీ స్నేహితుల జాబితా, మీరు చూడండి చూడాలని మీరు బహుశా కూడా ఇవ్వలేదని ప్రజలు మీరు స్నేహితులు ఉన్నారు గుర్తుంచుకోవాలి. ఆ Facebook రకాల ఎందుకంటే వార్తలు ఎలా ఆధారంగా మీ స్నేహితులు మీరు వాటిని క్లోజ్. కాబట్టి డేటా నిర్వహించడం వంటి. అలాగే పోకీమాన్. కాబట్టి మీరు అన్ని Pokémons ఆ చూడండి సంఖ్యలు ఉంటాయి. మరియు ఒక సులభమైన వంటిది డేటా యాక్సెస్ యొక్క మార్గం. ప్రేక్షకులు: పోకీమాన్ ప్రాప్తి చేయడం. LUCAS: అవును. ప్రేక్షకులు: [వినబడని]. LUCAS: YEP. సరే, అలా ఎంపిక విధమైన. ఎన్నిక విధమైన ఎంచుకోండి అన్నారు జాబితా అతిచిన్న క్రమబద్ధీకరించనిది విలువ ప్రతి ప్రతి మళ్ళా సమయం. ఇది రకమైన మీరు ఆ విధమైన వంటిది మీ తల లో మీరు ప్రయత్నిస్తున్న సమయంలో వైపు జాబితా క్రమం. సాధారణంగా, మీరు అన్ని మీరు చూడండి ఉంది అతిచిన్న సంఖ్య కోసం. మీరు క్రమబద్ధీకరించబడతాయి జాబితాలో ఉంచారు. ఆపై మీరు కోసం చూడండి తదుపరి చిన్న సంఖ్య. ఆపై మీరు పనిని ఆ మరియు అందువలన న. కాబట్టి ఎంపిక విధమైన మీరు రప్పించింది ప్రతిసారీ చిన్న ఎంచుకోండి క్రమబద్ధీకరించనిది విలువ. క్రమబద్ధీకరించబడతాయి చివరిలో ఉంచండి జాబితా భాగంగా. మరియు ఆ పనిని. కాబట్టి యొక్క త్వరగా చూద్దాం ఏమి ఈ కనిపిస్తోంది. కాబట్టి ఇక్కడ క్రమబద్ధీకరించబడతాయి వార్తలు మరియు క్రమబద్ధీకరించనిది జాబితా. జాబితా యొక్క క్రమబద్ధీకరించబడతాయి కాబట్టి, మొదట ఖాళీ. ఆపై నేను ఎంచుకోవచ్చు వెళుతున్న 2 ఇది ఇక్కడ చిన్న సంఖ్య. కాబట్టి నేను సంఖ్య 2 పొందుటకు మరియు నేను చాలు జాబితా ముందు. ఆపై నేను తదుపరి చిన్న కోసం చూడండి 3 ఇది మూలకం. కాబట్టి నేను ముగింపు వద్ద అది చాలు క్రమబద్ధీకరించబడతాయి జాబితా. ఆపై నేను ఆ పనిని. నేను 4 కనుగొనేందుకు మరియు చివరిలో అది చాలు. 5 కనుగొను మరియు చివరిలో అది చాలు. మరియు ఆ సార్లు ఎలా అన్ని చూడండి నేను ముగింపు, వద్ద అది చాలు మాట్లాడుతూ నేను ప్రధానంగా, రెండు విలువలు ఇచ్చిపుచ్చుకోవడంతో. సిద్ధమేనా? ఆపై చివరి, మీరు కేవలం ఒక మరింత మూలకం ఉన్నాయి. కాబట్టి ఇది ఇప్పటికే క్రమబద్ధీకరించబడతాయి. OK, కాబట్టి చొప్పించడం విధమైన. చేర్పు విధమైన మీరు కూడా చూడాలని ఒక క్రమబద్ధీకరించబడతాయి సరికొత్త ఆ విషయం ఒక క్రమబద్ధీకరించనిది జాబితా. మాత్రమే విషయం ప్రతిసారీ ఆ మీరు క్రమబద్ధీకరించబడతాయి ఒక మూలకం జోడించడం చేస్తున్నారు జాబితా, మీరు కేవలం మూలకం ఎంచుకొని ఆ క్రమబద్ధీకరించనిది జాబితా ముందు ఉంది. ఆపై మీరు ఏమి కనుగొనేందుకు వెళుతున్న స్థానం విభజించిన ఉండాలి జాబితా భాగంగా. కాబట్టి ఈ కాబట్టి ఉంది ఏమి చూడండి లెట్ ఈ మరింత అర్థవంతంగా ఉంటుంది. కాబట్టి మొదట, ఉదాహరణకు, నేను దీనికై లో మూడవ ఇన్సర్ట్ జాబితా యొక్క క్రమబద్ధీకరించబడతాయి భాగం. కాబట్టి జాబితా ఏదైనా లేదు. సో నేను సంఖ్య 3 ఉంచవచ్చు. ఇప్పుడు, నేను సంఖ్య 5 జోడించాలనుకుంటే జాబితా యొక్క క్రమబద్ధీకరించబడతాయి భాగం. కాబట్టి నేను సంఖ్య 5 చూడండి. నేను 3 కంటే ఎక్కువ అని గుర్తించలేకపోతే. కాబట్టి నేను 3 తర్వాత ఉండాలి అని తెలుసు. కాబట్టి, నేను 3 మరియు 5 చాలు. అప్పుడు నేను సంఖ్య 2 ఇన్సర్ట్ చెయ్యడానికి కావలసిన. నేను సంఖ్య 2 వాస్తవానికి ఉంది అని గుర్తించలేకపోతే తరువాత 3 మరియు 5 రెండు దాకా. నేను నిజానికి ఇది అన్ని ఉంచాలి జాబితా ప్రారంభంలో మార్గం. కాబట్టి నేను రకమైన, అన్ని మార్చేందుకు క్రమబద్ధీకరించబడతాయి జాబితా కాబట్టి నేను చెయ్యవచ్చు అంశాలు సంఖ్య 2 కల్పించడం. అప్పుడు నేను సంఖ్య 6 చూడండి. నేను 5 తర్వాత ఉండాలి చూడండి. కాబట్టి నేను అక్కడ ఉంచారు. చివరకు, నేను సంఖ్య 4 వద్ద చూడండి. మరియు నేను దానిని తప్పక గమనిస్తారు 3 మరియు 5 మధ్య ఉంటుంది. ఆపై నేను అక్కడ అది చాలు మరియు షిఫ్ట్ అన్ని ఇతర మూలకాలను. సమంజసం? బబుల్ సార్ట్. కాబట్టి బబుల్ సార్ట్ మీరు ఏ రప్పించింది అన్నారు మేము బుడగ కాల్ do-- కు మీరు list-- ద్వారా వెళ్ళి విధమైన నేను కేవలం చూపించు ఉంటే అది వాస్తవానికి మంచి పని మీరు ఈ వంటి మరియు మీరు పోల్చి చూడాలని ప్రక్కనే సంఖ్యలు. మరియు మీరు స్వాప్ వెళుతున్న వారి స్థానాలు వారు తెలియకపోతే కుడి క్రమంలో. సో basically, ఏమి జరుగుతుందో ఇక్కడ జరిగే, ఉదాహరణకు, మీరు 8 మరియు 6 చేశారు. మీరు క్రమబద్ధీకరించబడతాయి క్రమంలో లెఖ్ఖచేయను నిజానికి కుడి 6 మరియు 5 ఉంటుంది? కాబట్టి మీరు ఆదేశాలు మార్పిడి చూడాలని. అప్పుడు నేను ఇక్కడ 8 మరియు 4 చూడండి. నేను ఇదే. నేను మళ్ళీ స్వాప్. చివరకు, 2 మరియు 8. నేను కూడా వాటిని మార్పిడి. ఇది బబుల్ సార్ట్ తర్వాత ఎందుకంటే అని ఈ నిద్రావస్థ ప్రతి, నిజానికి, జాబితాలో సంఖ్యలో అన్ని గెట్స్ జాబితా చివర మార్గం. ఆ సమంజసం లేదు? అది ఇచ్చిపుచ్చుకోవడంతో ఉంచుతుంది ఎందుకంటే మరియు కుడి అది కదిలే. OK, కాబట్టి ఈ రెండవ మళ్ళా ఉంది. ఇది అదే విషయం ఉంటుంది. నేను ఒక స్వాప్ చేస్తాను అప్పుడు చివరి. మార్పిడులు ఉన్నాయి నేను మరియు జాబితా క్రమబద్ధీకరించబడింది. బబుల్ సార్ట్ లో కాబట్టి, మేము ప్రధానంగా ఉంచడానికి జాబితా ద్వారా వెళ్లి ఇచ్చిపుచ్చుకోవడం విషయాలు నేను చేయకపోవడంతో ప్రకటన వరకు ఆ మళ్ళా చేయడం ఏ మార్పిడులు, ఇది జాబితా ఇప్పటికే క్రమబద్ధీకరించబడింది ఆ అర్థం. సమంజసం? యొక్క కొద్దిగా చర్చ లెట్ అమలు సమయం గురించి. కాబట్టి మీరు అబ్బాయిలు బిగ్ గుర్తుంచుకోవాలి లేదు ఓ, ఒమేగా, మరియు తీటా? అవును? సరే, బిగ్ O అన్ని మొదటి, ఏమిటి? ప్రేక్షకులు: [వినబడని]. LUCAS: అవును, అది ఒక చెత్త సందర్భంలో అని అది అంతే అంటే రన్టైమ్, ఎంత మీరు ప్రోగ్రామ్ ఆశించడం అమలు తీసుకోవాలని. ఇలా, పరంగా of-- ఈ సందర్భంలో, n. మూలకాల సంఖ్య చెత్త సందర్భంలో జాబితా. ఇలా, నీచమైన సందర్భంలో. బబుల్ సార్ట్ కాబట్టి, ఉదాహరణకు, మేము n చదరపు యొక్క బిగ్ O కలిగి. ఎందుకు మేము కలిగి లేదు? ఎందుకు బబుల్ బిగ్ O N చతురస్ర క్రమీకరించు ఉంది? ప్రేక్షకులు: [వినబడని]. LUCAS: అవును, కాబట్టి చెత్త సందర్భంలో ఉంటుంది ఆ నేను n నిద్రావస్థ చేయండి ఉంటుంది. కాబట్టి నిద్రావస్థ ప్రతి అన్నారు చివర అతిపెద్ద సమకూరతాయని జాబితా. కాబట్టి చెత్త సందర్భంలో నేను కలిగి ఉంది ఆ విషయం n సార్లు చేయాలని. మరియు ఆ సార్లు ప్రతి, నేను కలిగి నేను పోల్చడానికి కలిగి ఎందుకంటే మార్పిడులు చేయండి ప్రతి రెండు అంశాలు. అది n స్క్వేర్డ్ వై సో ఆ అది n సార్లు n ఎందుకంటే. అప్పుడు, ఎంపిక విధమైన కూడా n కూడలి ఎందుకంటే, ప్రతి మళ్ళా కోసం, నేను కలిగి ప్రతి మూలకం జాబితాలో లేదు. ఆపై, చిన్న కనుగొనేందుకు ఇది నేను కలిగి అర్థం n మూలకాలు ద్వారా చూడండి. మరియు నేను ఎందుకంటే ఆ n సార్లు చేయాల్సిందల్లా నేను అన్ని n మూలకాలు ఎంచుకోవాలి. ఒక చొప్పించడం విధమైన కూడా n కూడలి చెత్త దృష్టాంత ఎందుకంటే , ఒక, నేను ఇన్సర్ట్ ఉంటుంది n సంఖ్యలు, కుడి? కాబట్టి నేను ఇప్పటికే నేను వెళ్తున్నాను అని తెలుసు లేదా నిద్రావస్థ కలిగి. కానీ నేను కలిగి ఆ సంఖ్యల ప్రతి, ఉంటే సంఖ్యల అన్ని చూడండి క్రమబద్ధీకరించబడతాయి జాబితా మరియు దాని అన్ని మార్గం చాలు ముందు, ఆ n చదరపు ఉంటుంది n సార్లు n మళ్ళీ ఉంటుంది ఎందుకంటే. సమంజసం? ఏం ఒమేగా గురించి? ప్రేక్షకులు: [వినబడని]. LUCAS: ఇది ఉత్తమ దృష్టాంతంలో ఉంది. కాబట్టి సార్లు చాలా కోసం, వంటిది ఉత్తమ దృష్టాంతంలో ఉంది, సార్టింగ్ జాబితా ఇప్పటికే క్రమబద్ధీకరించబడింది. కాబట్టి మీరు నిజంగా లేని ఏమీ. బబుల్ సార్ట్ ఉత్తమ ఉంది n యొక్క దృష్టాంత. మీరు అబ్బాయిలు ఎందుకు తెలుసా? ప్రేక్షకులు: [వినబడని]. LUCAS: అవును, మీరు ట్రాక్ ఉంటే డేటా రేషన్ ఏ మార్పిడులు కలిగి లేదో మీరు ఏదో కలిగి ఉంటే కాదు, సెట్ వంటి ఒక పునరుక్తి చేస్తే అక్కడ అది నిజమైన జాబితా ఇప్పటికే ప్రాథమికంగా, క్రమబద్ధీకరించబడింది ఏ జరిగే అవకాశముంది నేను వెళుతున్న ఉంది ప్రతి రెండు స్వాప్ ప్రయత్నించండి ప్రక్కనే అంశాలు. నేను చూడండి వెళుతున్న మార్పిడులు ఉన్నాయి. నేను కేవలం వెంటనే తిరిగి. కాబట్టి నేను కేవలం వచ్చింది అర్థం జాబితా ఒక సమయంలో ద్వారా వెళ్ళడానికి. నేను చూడండి ఎందుకంటే అది n ఉంది n మూలకాలు వద్ద. ఎందుకు ఎంపిక విధమైన N చతురస్ర? అవును, జాబితా క్రమబద్ధీకరించబడింది కూడా, కోసం ఎంపిక విధమైన ప్రతి మళ్ళా నేను కనీస మూలకం ఎంచుకోవాలి. కాబట్టి ఆ నేను చూడటానికి తెలుసుకో అర్థం క్రమబద్ధీకరించనిది అన్ని అంశాలను జాబితా మరియు కనీస కనుగొనడానికి ప్రతి మళ్ళా కోసం. ఆ సమంజసం లేదు? మరియు చొప్పించడం కత్తి ఎందుకంటే n లు నేను ఇన్సర్ట్ దీనికై ఆ సందర్భంలో సంఖ్యలు మరియు సంఖ్యల అన్ని, నేను వాటిని ఇన్సర్ట్ చెయ్యడానికి ప్రయత్నించండి, నేను వారు చూడండి కుడి స్థానంలో ఉన్నాయి. నేను అన్ని ఇతర తనిఖీ వెళ్ళడానికి లేదు క్రమబద్ధీకరించనిది జాబితా సంఖ్యలు. అది n ఉంటుంది ఎందుకు కాబట్టి ఆ. సమంజసం? మరియు తీటా ఏమిటి? ప్రేక్షకులు: [వినబడని]. LUCAS: ఏం, క్షమించాలి? మళ్ళీ చెప్పాను. ప్రేక్షకులు: [వినబడని]. LUCAS: ఖచ్చితంగా. కాబట్టి మీరు ఆ కేవలం ఎంపిక చూడగలరు విలీన నిల్వ విధమైన thetas చేశారు. మీరు మాత్రమే తీటా కలిగి ఎందుకంటే ఆ వార్తలు బిగ్ O మరియు ఒమేగా రెండూ ఒకే ఉంటే. సరే. చివరకు, లాగ్ n విధమైన విలీనం. డాన్ విధంగా జరిగినది ఆపై, విలీనం విధమైన రకమైన అదే విధంగా ఇష్టం అని మీరు బైనరీ శోధన చేయండి. సో మీరు జాబితా పొందుటకు. మరియు మీరు సగం లో కట్ చూడాలని. ఆపై మీరు వాటిని కట్ చిన్న భాగాల లో. ఆపై మీరు వాటిని విలీనం. మీరు అబ్బాయిలు, కుడి గుర్తు? సరే, అతను విధంగా జరిగినది. సరే, పాయింటర్లు. కాబట్టి ఒక పాయింటర్ ఏమిటి? ప్రేక్షకులు: [వినబడని]. LUCAS: ఒక చిరునామా. సరే. నేను డేవిడ్ కొంత చూపే తెలుసు Binky వీడియోలు మరియు విషయాలు గురిపెట్టి ప్రతి ఇతర. కానీ నేను గమనికలు ఆలోచించడానికి ఇష్టపడతాను కేవలం ఒక చిరునామా వంటి. కనుక ఇది వెళుతున్న ఒక వేరియబుల్ వార్తలు ఒక చిరునామా నిల్వ. కనుక ఇది కేవలం ఈ ప్రత్యేక వేరియబుల్ వార్తలు నాలుగు బైట్ల పొడవు ఉంటుంది. ఏదైనా ఆ పాయింటర్ ఉంది, గుర్తుంచుకో మా 32-bit కోసం దీర్ఘ ఎల్లప్పుడూ నాలుగు బైట్లు యంత్రం కేసు కాబట్టి ఉపకరణం. మరియు అది కేవలం నగర ఉంది అది లోపలి ఒక వేరియబుల్. OK, కాబట్టి ప్రాథమికంగా, ఈ మెమరీ ఉంది. కాబట్టి మెమరీ ప్రతి బ్లాక్ వాస్తవానికి ఒక యొక్క చిరునామా ఇది లేబుల్, slotty మెమరీ. అక్కడ నేను దొరుకుతుంది ఒక పాయింటర్ ఈ చిరునామాలకు ఏ. కాబట్టి మేము గమనికలు ఉపయోగించవచ్చు చేస్తాము ఎందుకు కారణం నేను స్థానాన్ని గుర్తు పెట్టుకోవాలి ఉంటే ఒక నిర్దిష్ట వేరియబుల్ జ్ఞాపకాలు. మీరు అబ్బాయిలు గుర్తు వారిలో ఆ నేను ఒక ఫంక్షన్ కలిగి ఉంటే సందర్భాల్లో ఉంది నేను నిజానికి ఉంటే మీరు కావలసిన యధార్థాలలో కోసం స్వాప్, నేను నిజానికి ఒక పాయింటర్ పంపడానికి కలిగి. కాదు వేరియబుల్. మీరు అబ్బాయిలు ఆ గుర్తు లేదా? తేడా between-- పేరు ఏమిటి? విలువ మరియు కాల్ కాలింగ్ సూచనగా, కుడి? అవును, సరే. కాబట్టి విలువ కాల్. మీరు ఒక వేరియబుల్ కు పంపినప్పుడు మీరు కేవలం ఒక విలువ పంపడం చేస్తున్న ఫంక్షన్. కాబట్టి మీరు నిజంగా పంపిస్తున్నాం వేరియబుల్ యొక్క నకలు. మీ ప్రోగ్రామ్ తక్కువ పట్టించుకోరు కాలేదు నిజానికి అదే వేరియబుల్ ఉంటే గురించి నకలును. మరియు సూచన అర్థం ద్వారా కాల్ నేను నిజానికి ఒక కాపీని పంపడం చేస్తున్నాను ఆ వేరియబుల్ పాయింటర్. కాబట్టి నేను పంపడం చేస్తున్నాను అని అర్థం ఆ వేరియబుల్ యొక్క స్థానము. కాబట్టి నేను స్థానాన్ని అంటుంది వేరియబుల్, నేను కాల్ ఫంక్షన్ గమనికలు, నేను నిజానికి సామర్థ్యం రెడీ ప్రధాన అని డేటా మార్చండి. సమంజసం? అయినప్పటికీ, పాయింటర్ కాపీని ఉంది పాయింటర్ ఇప్పటికీ వాస్తవ చిరునామా ఉంది నేను మార్చడానికి కావలసిన వేరియబుల్. సమంజసం? కాబట్టి గమనికలు సృష్టించడం. ఎల్లప్పుడూ పాయింటర్ కలిగి గుర్తుంచుకో ఇది సూచించే చేసే రకం ఒక నక్షత్రానికి అప్పుడు. ఆపై మీరు పేరు పెట్టి. కాబట్టి మీరు తోచిన గుర్తుంచుకోవాలి సంసార స్టార్, అది ఒక పాయింటర్ వంటిది సంసార వేరియబుల్ మీరు కలిగి టైప్ చేయండి. కాబట్టి ఇక్కడ స్టార్, ఉదాహరణకు, అది వార్తలు ఒక పాయింటర్ మరియు పూర్ణాంకం. ఆపై చార్ స్టార్ పాయింటర్ ఉంది చార్ స్టార్ మొదలగునవి. అవును? ప్రేక్షకులు: మనం కలిగి ఉంటే ఒక n కు పాయింటర్ x నటించనున్నాడు. నేను ఆ x ఒక పాయింటర్ సృష్టిస్తుంది తెలుసు. దీన్ని కూడా పూర్ణాంకం x డిక్లేర్ లేదు? LUCAS: OK, కాబట్టి మీరు n స్టార్ x చెప్పినప్పుడు, మీరు ఒక ఒక పాయింటర్ సృష్టించడం లేదు వేరియబుల్ x. మీరు x అనే పాయింటర్ సృష్టిస్తున్నారు. ప్రేక్షకులు: [వినబడని]. LUCAS: నేను n స్టార్ x చెప్పినప్పుడు కనుక, నేను రెడీ హే, మెమరీ లో, నేను వెళుతున్న, చెప్పడం ఈ మూడు బాక్సులను ఒకటి పొందండి. నేను ఆ చెప్పటానికి వెళుతున్న ఇది x ఉంటుంది అన్నారు వెళుతున్న ఒక పాయింటర్. గమనికలు గురించి ఆసక్తికరమైన ఏదో మేము వారు అని చెప్పారు ఉంది 32-bit మిషన్ కోసం 4 బైట్లు. మరియు ఆ కారణం ఎందుకంటే ఉంది 4 బైట్లు 32 బిట్స్ ఉంటాయి. 64 బిట్స్ నిజానికి అని మరియు యంత్రాలు గమనికలు చిరునామాలను కలిగి 64 బిట్స్ పొడవుగా ఉంటాయి. కనుక ఇది కేవలం అర్థం యొక్క పరిమాణం యంత్రం లో చిరునామాలను భిన్నంగా ఉంటుంది. కాబట్టి సూచిస్తూ మరియు Dereferencing. రెండు ఆపరేటర్ల ఉన్నాయి మీరు అబ్బాయిలు గుర్తుంచుకోవాలి ఉండాలి. మొదటి ఆంపర్సండ్ చిహ్నం ఉంది. రెండవ నక్షత్రం. ఆ స్టార్ మరియు ఈ ద్వారా అయోమయం పొందలేము ఎందుకంటే, గుర్తుంచుకోవాలి నటుడు ఈ సందర్భంలో, మీరు n స్టార్. ఇది కలిసి మొత్తం విషయం వంటిది. ఏ n ఖాళీ స్టార్ ఉంది. కనుక ఇది రకం అని అర్థం. మీరు కలిగి ఉన్నప్పుడు ఆ, గుర్తుంచుకో వేరియబుల్ స్టార్, మీరు ఉన్నాము రకం గురించి మాట్లాడటం. మీరు అప్పుడు కేవలం స్టార్ కలిగి ఉన్నప్పుడు వేరియబుల్ పేరు, అది అర్థం మీరు పాయింటర్, dereferencing చేస్తున్నారు మీరు శోధిస్తున్న అంటే పాయింటర్, చిరునామా కనుగొనడంలో వార్తలు చెబుతోంది ఆ చిరునామాకు వెళ్తున్నారు, మరియు చేసినప్పుడు చూడటం మీరు అక్కడ. నేను మీరు కలిగి ఉన్నప్పుడు ఆ నా విద్యార్థులు చెప్పండి స్టార్, మీరు ఆ భావించాలని కంటెంట్ సంక్షిప్త. మీరు ఒక పాయింటర్ కలిగి ఉంటే మరియు మీరు స్టార్ పాయింటర్ పనిని, ఇది వార్తలు పాయింటర్ యొక్క కంటెంట్. కాబట్టి మీరు సూచించే సంసార వెళ్ళండి మరియు స్థిర కంటెంట్ చూడండి. మరియు ఆంపర్సండ్ చిహ్నం అదే ఉంది చిరునామా వంటి విషయం. నేను వంటి a-- ఒక వేరియబుల్ కలిగి ఉంటే కాబట్టి, లెట్స్ పూర్ణాంకానికి ఒక సమానం నేను అని చెప్పాలి 3-- నేను ఆ చిరునామా కనుగొనేందుకు కావాలా వేరియబుల్ మెమరీ నేను చెయ్యాలి ఒక ఆంపర్సండ్ చిహ్నం. కాబట్టి అది ఒక చిరునామా ఉంది. సమంజసం? కాబట్టి ఇక్కడ ఒక ఉదాహరణ ఉంది. ఈ Int బి మరియు Int సి లేదు. ఒక 3 అంటే సమానం కాబట్టి Int ఆ నేను మెమరీ వెళ్ళడానికి వెళుతున్న. నేను ఒక స్లాట్ కనుగొనేందుకు వెళుతున్న మరియు ఇక్కడ సంఖ్య 3 ఉంచండి. ఆపై Int బి 4 సమానం. నేను అదే పనిని చేయడానికి వెళుతున్న. మెమరీ వెళ్ళండి మరియు ఒక సంఖ్య చాలు బాక్సులను ఒకటి 4. మరియు Int 5 సమానం. మరొక బాక్స్ కనుగొను మరియు ఒక సంఖ్య 5 ఉంచండి. కాబట్టి అవుట్ చేయడం ఈ లైన్ ఏమిటి? n star PA ఆంపర్సండ్ చిహ్నం ఒక సమానం. కాబట్టి అన్ని మొదటి, N స్టార్ PA. ఇది ఏమి ఉంటుంది? ప్రేక్షకులు: [వినబడని]. LUCAS: అవును, కాబట్టి n స్టార్ PA, మొదటి, PA అనే ​​పాయింటర్ ప్రకటించాడు. ఆపై దాని విలువను కేటాయించి యొక్క ఆ పాయింటర్ ఒక యొక్క చిరునామా అవసరం. కాబట్టి ఒక ఆంపర్సండ్ చిహ్నం. అప్పుడు, నేను స్టార్ పీబీ లేకపోతే, ఒక స్టార్ పీబీ ఏమిటి? ఓహ్, సారీ. ఈ కూడా లేదు. n star పీబీ. నేను స్టార్ PC అర్థం. నేను క్షమించండి. ఇది అదే విషయం. కానీ ఇప్పుడు నేను ఒక పాయింటర్ సృష్టించడంలో AR మంచి ఉన్నాను అప్పుడు సి ఒక పాయింటర్ B మరియు. అవును? ప్రేక్షకులు: [వినబడని]? LUCAS: అవును. కాబట్టి మీరు మెమరీ వెళ్ళండి మరియు మీరు వెళ్ళండి ఉంటే PA కి రూపకల్పన బాక్స్, మీరు నిజంగా చూడాలని ఒక యొక్క చిరునామాను చూడండి. సిద్ధమేనా? అవును? ప్రేక్షకులు: [వినబడని]? LUCAS: అవును, పాయింటర్ ఒక చిరునామా ఉంది. ఎప్పుడూ మర్చిపోవద్దు. ఇది అతి ముఖ్యమైన వంటిది గమనికలు గురించి భాగంగా. నిల్వ మరియు చిరునామా ఉంది కొన్ని వేరియబుల్. ఏదైనా? ఏదైనా ఇతర ప్రశ్నలు? సరే. కాబట్టి గమనికలు మరియు వ్యూహాలను. గుర్తుంచుకో నేను శ్రేణి 3 పూర్ణాంకానికి చేసినప్పుడు, ప్రధానంగా, నేను ఏమి నేను రకమైన ఉన్నాను ఉంది , ఒక పాయింటర్ లో ప్రకటించారు. కాబట్టి శ్రేణి రకమైన ఒక పాయింటర్ వలె ఉంటుంది మెమరీ నిర్దిష్ట స్థానంలో దీనిలో నేను పూర్ణాంకాల మూడు విభాగాలు కేటాయించింది. ఆ సమంజసం లేదు? నేను Int శ్రేణి 3 అలా చేసినప్పుడు, నేను ఏమి రెడీ చేయడం, ప్రధానంగా మూడు సృష్టిస్తుంది మెమరీ లో స్లాట్లు. నేను మెమరీలో మూడు విభాగాలు చూడండి. నేను అప్పుడు, ఒక స్టార్ శ్రేణి, దీన్ని ఉంటే ప్రధానంగా శ్రేణి యొక్క కంటెంట్ అర్థం, ఇది నేను వెళ్ళి, నేను పాయింటర్ వేయండి అర్థం అది సూచించే చేసే ఆ స్థానానికి, నేను సంఖ్య ఒకటి చాలు. ఆపై, నేను స్టార్ శ్రేణి ప్లస్ 1 చేస్తే, ఆ శ్రేణి చేయడం అదే విషయం కేవలం నేను వెళ్లి అంటే ఒక BRACKETS ఇది వద్ద గురిపెట్టి ఆ స్థలం. ఆపై ప్లస్ 1 తయారీలను నాకు ఒక స్థానం మారవచ్చు. నేను, వాస్తవానికి, ఈ స్థానం వెళ్ళండి మరియు సంఖ్య రెండు ఉంచండి. ఆపై, చివరకు, నేను ఉన్నప్పుడు చేయండి శ్రేణి ప్లస్ 2, నేను ఎక్కడ వెళ్ళండి శ్రేణి యొక్క పాయింటింగ్. ఆపై నేను మెమరీ బ్లాక్స్ తరలించడానికి. ఆపై నేను ఇక్కడ సంఖ్య మూడు ఉంచాలి. అవును? ప్రేక్షకులు: సో స్టార్ వ్యూహం కేవలం ఉంది మొట్టమొదటి పాయింట్ పేర్కొంది. మరియు మీరు కేవలం ఎందుకంటే, 1 జోడించవచ్చు మేము మాత్రమే నిజంగా ఉన్నారు మొదటి చిరునామా సూచిస్తూ. LUCAS: అవును. ఎందుకు మేము, ఉదాహరణకు, అర్రే చెప్పడం లేదు 0, అర్రే 1 యెరే 2? నేను, ఎందుకు మీరు 0 చేస్తారు మాట్లాడుతూ వెబ్ 1, 2, 3 బదులుగా 1, 2, 3? కారణాలు, ఒకటి, కంప్యూటర్ ప్రోగ్రామర్లు ప్రారంభించడానికి ఇష్టపడతారు 0 నుండి లెక్కింపు. మీరు శ్రేణి 0 చేసినప్పుడు ఎందుకంటే రెండు, ఉంది అది యెరే చేయడం అదే విషయం అంటే ప్లస్ 0, నేను వెళ్ళి ఆ స్థానం, మరియు నేను లేదు ఏ మెమరీ బ్లాక్స్ skip. కాబట్టి నేను ఏ మెమరీ బ్లాక్స్ తరలించడానికి లేదు. అవును? ప్రేక్షకులు: [వినబడని]? LUCAS: సో ఆమె ఏమి ఉంది కోరుతూ చేయడం మధ్య తేడా ఈ లేదా malloc చేయడం. తేడాలు ఒకటి ఉంది పూర్ణాంకానికి శ్రేణి 3 సృష్టిస్తుంది స్టాక్ శ్రేణి. మరియు నేను malloc లేనప్పుడు, కుప్ప మీద సృష్టిస్తుంది. ఆ సమంజసం లేదు? సో ఎలా malloc వాస్తవానికి పని? సో ఎందుకు మేము కూడా malloc ఉపయోగించవచ్చు చేయాలి? వ్యక్తులలో మీ కంపైలర్ రకమైన అన్ని మీరు డిక్లేర్డ్ వేరియబుల్స్. మరియు అతను అన్ని కోసం స్థలం సృష్టిస్తుంది స్టాక్ లో వాటిలో. సో మీ వేరియబుల్స్ యొక్క అన్ని వెళ్తున్నారు ఎక్కడో స్టాక్ ఉండాలి. కాబట్టి ఇక్కడ పరిసరం ఉంది. ఆ వేరియబుల్స్ కాబట్టి ప్రాథమికంగా, స్పేస్ మెమరీలో వద్ద కేటాయించబడుతుంది సమయం కంపైల్. కనుక ఇది మీ కంప్యూటర్ ఉంది అని అర్థం ఆ వేరియబుల్స్ యొక్క అన్ని తెలుసు ముందుగానే. ఇది ఏ విలువ తెలుసుకోవాలి లేదు మీరు వాటిని ఉంచాలి చేయబోతున్నామని. కానీ అది ఎలా తెలుసుకోవాలి మీరు అవసరం మెమరీని. కానీ ఇప్పుడు, యొక్క ఉదాహరణకు, అని పిలవబడు మీరు ఒక అర్రే సృష్టించడంలో లేదా ఒక వేస్తున్నాము మీరు వేస్తున్నాము స్ట్రింగ్ వినియోగదారు నుండి. మీరు తెలియదు ఎలా దీర్ఘ స్ట్రింగ్ ఉదాహరణకు, అని అన్నారు. సో మీరు ఖచ్చితంగా ఎన్ని తెలియదు మెమరీ బ్లాక్స్ మీరు కుడి, కేటాయించాలని? కనుక ఇది నిజంగా సమంజసం అనిపించుకోదు మీరు 100 అక్షరాలు ఉంచాలి చెప్పటానికి. ఆపై యూజర్ 150 రాశాడు ఏమి ఉంటే? మీరు వత్తిడి కావడం చేస్తున్నారు. కాబట్టి ప్రాథమికంగా, మీరు ఎలా ఖచ్చితంగా కాదు మీరు కేటాయించే అవసరం చాలా మెమరీ ఉన్నప్పుడు మీరు ప్రోగ్రామ్ కంపైల్. మీరు కేవలం అమలు సమయం తెలుసు. మీరు కుప్ప ఎందుకు కాబట్టి ఆ. కాబట్టి కుప్ప మెమరీ కలిగి అన్నారు మీరు సమయంలో పెడుతోంది చేస్తున్న ప్రోగ్రామ్ను అమలు వ్యవధి. కాబట్టి ప్రాథమికంగా, మీరు malloc చేసినప్పుడు, ఏమి మీరు మెమరీ పెడుతోంది ఉంది చేస్తున్నా మీరు ఉన్నాం రన్టైమ్, ఆ సమయంలో కుడి నిర్ణయించి మీరు ఆ స్మృతి ఉండాలి. మీరు పెడుతోంది చేసినప్పుడు కాబట్టి ఆ. ఆ సమంజసం లేదు? కాబట్టి స్టాక్ వేరియబుల్స్ ఉన్నాయి గుర్తుంచుకోవాలి కంపైల్ సమయం సృష్టించబడతాయి. ఆపై కుప్ప వేరియబుల్స్ ఉన్నాయి మీరు వంటి సృష్టించబడతాయి ఉదాహరణకు, malloc తో. ప్రేక్షకులు: [వినబడని]? LUCAS: కాబట్టి GetString ఉంది malloc కాల్ అన్నారు. నాకు malloc గురించి మాట్లాడటానికి లెట్, మరియు నేను GetString వివరించడానికి చేస్తాము. కాబట్టి malloc అదే విషయం మెమరీ కేటాయింపు. కాబట్టి కేటాయించాలని జరగబోతోంది కుప్ప మీద మెమరీ. మరియు అది ఒక పాయింటర్ తిరిగి వెళుతున్న అక్కడ ఆ మెమరీ వద్ద కేటాయించారు. కాబట్టి మీరు do-- ఉన్నప్పుడు ఇక్కడ ఉదాహరణకు కోసం n star పాయింటర్. ఆపై పాయింటర్ malloc సమానం అంగుళాల సార్లు 10 యొక్క పరిమాణం. నేను ఒక పాయింటర్ సృష్టించడంలో చేస్తున్నాను. ఆపై నేను ఆ పాయింటర్ కేటాయించి నేను పాయింటర్ ఆ malloc యొక్క విలువ నాకు కల్పించడం. కాబట్టి నేను అడగడం malloc మీరు కేటాయించాలని 10 పూర్ణాంకాల స్థలం. ఆ విధంగా అది ఏమిటి. మరియు malloc నాకు తిరిగి ఇచ్చే ఒక ఆ స్థానంలో పాయింటర్. సమంజసం? సరే. నేను మరియు GetString, ప్రధానంగా, చేస్తున్న మీరు కేటాయించాలని కాబట్టి malloc కాల్ రన్టైమ్ నందు మెమరీ. ఎల్లప్పుడూ శూన్య తనిఖీ గుర్తు malloc శూన్య తిరిగి వెళుతున్న ఎందుకంటే ఇది మెమరీని కేటాయించాల్సిన పోతే. మీరు ఒక పరిహాసాస్పదం గోవా అని పిలవబడు మెమొరీ మొత్తం. మీ కంప్యూటర్ చేస్తాడు లేదు ఎక్కువ కేటాయించాల్సిన చేయగలరు. కాబట్టి malloc కేవలం అన్నారు శూన్య తిరిగి. కాబట్టి ఎల్లప్పుడూ ఉంటే తనిఖీ గుర్తుంచుకోవాలి మీరు malloc నుండి వచ్చింది అని పాయింటర్ ఉంది NULL లేదా అది ఉంటే, మీరు వాటిని, ఎందుకంటే ఒక పాయింటర్ dereferencing ఉంటుంది మరియు సైడ్ లోపాలుగా దీనివల్ల. చివరకు, మర్చిపోతే లేదు మీ మెమరీ ఉచిత. Malloc కుప్ప లో మెమొరీ సృష్టిస్తుంది. మరియు మీరు మెమరీ విడిపించేందుకు ఉంటుంది కార్యక్రమం ముగుస్తుంది ముందు. సరే, నాకు అన్ని పేర్కొంది. క్షమించండి, రాబ్. ధన్యవాదాలు. [చప్పట్లు] LUCAS: ఏదైనా గత ప్రశ్నలు రాబ్ వస్తుంది ముందు? సంఖ్య? అవును? ప్రేక్షకులు: నేను చూడలేదు ఈ ఒక ఆన్లైన్. మీరు ఇంకా అది అప్లోడ్ చేసారా? LUCAS: నేను డేవ్ అనుకుంటాను త్వరలో అప్లోడ్. దవే: ఇది పోస్ట్ చేస్తాము. LUCAS: ఇది ఆన్లైన్ ఉంటాం. ప్రేక్షకులు: ఇది ఇష్టం. LUCAS: ఇది జరుగుతోంది? సరే. అవును? ప్రేక్షకులు: [వినబడని]? LUCAS: అవును, మీరు విడిపించేందుకు ఉండాలి అన్ని కుప్ప ప్రవేశపెడితే ఆ స్మృతి. ప్రేక్షకులు: [వినబడని]? LUCAS: అవును. మీరు ఒక సంస్కృతి malloc ఏదైనా సమయం, మీరు ఉచిత ఒక సంస్కృతి ఉండాలి మీరు తర్వాత ఆ వేరియబుల్ ఉపయోగించి ఆపడానికి. కాబట్టి malloc మరియు ఉచితం ఎల్లప్పుడూ కలిసి. వారి ఉత్తమ స్నేహితులు. అవును. రాబ్? రాబ్: నేను త్వరగా వెళ్తారో. మరియు కూడా వీడియో ఇవ్వడానికి చేయబడుతుంది. నేను సమయపు చేశారు. OK, కాబట్టి వారంలో ఐదు విషయం. మేము కలిగి మొదటి విషయం స్టాక్ ఉంది. కాబట్టి ఒకే ఒక స్టాక్ ఉంది గుర్తుంచుకోవాలి క్రియాశీల ఫంక్షన్ కాల్ శాతం ఫ్రేమ్. మేము రెండవ ఆ చూస్తారు. మరియు వాస్తవానికి క్రియల గుర్తు ప్రతి స్టాక్ ఫ్రేమ్ లో ఉన్నట్లు వెళ్తున్నారు మా విధులు స్థానిక వేరియబుల్స్, లోనికి ప్రవేశిస్తుంది అని వాదనలు మా ఒక జంట తో పాటు విధులు, ఇతర విషయాలు మీరు నిజంగా లేదు గురించి ఆందోళన అవసరం. కాబట్టి ఇక్కడ పేరు ఒక ఉదాహరణ కార్యక్రమం, నోటీసు, ప్రధాన తిరిగి printfing ఉంది foo 4 విలువ. foo కేవలం తిరిగి అన్నారు బార్ 4 కామా 6 విలువ. మరియు బార్ కొన్ని స్థానిక కానుంది 4 సార్లు 6 సమానంగా వేరియబుల్ n. మరియు అప్పుడు n తిరిగి. కాబట్టి యొక్క అంతటా స్టాక్ చూద్దాం ఈ కార్యక్రమం అసలు మళ్ళా. కాబట్టి మన స్టాక్ దిగువన ఉంది. స్టాక్ అప్ పెరుగుతుంది గుర్తుంచుకోండి. మా స్టాక్ దిగువన కాబట్టి, మేము ప్రధాన కోసం ఒక స్టాక్ ఫ్రేమ్ కలిగి ఉంటాయి. చేసినప్పుడు కార్యక్రమం మొదలవుతుంది, ప్రధాన ఎల్లప్పుడూ అవతరిస్తుంది మా స్టాక్ దిగువన. మరియు దాని లోపల ఏమి ఉంది మా ప్రధాన కోసం ఫ్రేమ్ పేర్చడాన్ని? అందువలన ప్రాంతీయ ఉన్నాయి అయినప్పటికీ ప్రధాన వేరియబుల్స్ నేను ముందు చెప్పారు వంటి మేము argc మరియు సినీనటి స్థలాన్ని తీసుకొని ఉన్నాయి ప్రధాన స్టాక్ ఫ్రేమ్ లోపల. ఇప్పుడు అన్నారు కాబట్టి ప్రధాన ఫంక్షన్ foo కాల్. ఆ foo మాత్రం అర్థం దాని స్వంత స్టాక్ ఫ్రేమ్ పొందడానికి. కాబట్టి ఇప్పుడు మేము లోపల ఉన్నారు ఫంక్షన్ foo. మరియు ఏమి ఇవ్వాలి foo యొక్క స్టాక్ ఫ్రేమ్? వెల్, foo ఒక వాదన లేదా ఉంది. ఆ తరువాత మరియు n 4 సమానంగా ఏమి ప్రధాన foo యొక్క వాదన వంటి గుండా ఉంది. కాబట్టి ఇప్పుడు foo బార్ కాల్ అన్నారు. ఏం బార్ లోపల కలిగి అన్నారు దాని 'స్టాక్ ఫ్రేమ్? ఇది ఆరు సమానంగా 4 y కు సమానంగా x ఉంది. మనం చేయబోతున్నామని అన్ని కాదు బార్ ఎందుకంటే స్టాక్ ఫ్రేమ్ లో కూడా ఒక స్థానిక వేరియబుల్ n ఉంది. మరియు n మేము 24 సమానంగా సెట్ చూడాలని. కాబట్టి ఇప్పుడు బార్ లేదా తిరిగి అన్నారు. కాబట్టి బార్ 24 చేరుకుంటున్నాయి స్టాక్ ఫ్రేమ్ foo. మరియు బార్ ఇప్పుడు ఆ, తిరిగి ఎందుకంటే మేము స్టాక్ ఫ్రేమ్ పాపింగ్ చేస్తున్నారు అర్థం స్టాక్ ఆఫ్ బార్. బార్ జరిగింది కాబట్టి అన్ని మెమరీ ఉపయోగించి స్టాక్ ఇప్పుడు ఆఫ్లో ఉంది. ఇప్పుడు, foo కూడా అన్నారు ప్రధాన 24 తిరిగి. కాబట్టి ఇప్పుడు ఆ foo, మెమరీ తిరిగి ఆ foo దాని 'లో వాడుకుంటున్నారని స్టాక్ ఫ్రేమ్ కూడా వెళ్లిపోయిన. ఇప్పుడు, ప్రధాన printf కాల్ అన్నారు. కాబట్టి printf కేవలం మరొక విధి. మేము printf కాల్ చేసినప్పుడు, అది చేస్తాడు printf మరో స్టాక్ ఫ్రేమ్ ఫంక్షన్ కాల్. ఏం మేము printf ప్రయాణిస్తున్న? ఆ వెళ్ళడానికి జరగబోతోంది ఏమిటి దాని స్టాక్ ఫ్రేమ్ లో. చాలా కనీసం, మేము అక్కడ చేస్తున్నారు ఆ శాతం నేను n బ్యాక్స్లాష్ మరియు వాదన 24. ఇది స్టాక్ ఫ్రేమ్ లో ఇది ఎక్కువ ఉండవచ్చు printf కొన్ని ఉపయోగించి జరిగితే స్థానిక వేరియబుల్స్. మేము తెలియదు. కానీ ఆ printf యొక్క వెళుతుంది ఫ్రేమ్ స్టేక్. ఇది printf అమలు జరగబోతోంది. తరువాత printf ప్రదర్శనతో. ఇది చేరుకుంటాయి. చివరగా, ప్రధాన జరుగుతుంది. ప్రధాన చేరుకుంటాయి. ఆపై మా కార్యక్రమం జరుగుతుంది. అవును? ప్రేక్షకులు: మీరు చూస్తున్నారు [వినబడని] వాదనలు [వినబడని] పారామితులు? రాబ్: సో ఒక సూక్ష్మ తేడా ఉంది వాదనలు మరియు పారామితులు మధ్య. మరియు నిజంగా, సాధారణ మాట్లాడటం, ప్రజలు ఉంటాయి కేవలం వాటిని అన్ని సమయం అప్ కలపాలి. కానీ పారామితులు దుస్తులు ఉంటాయి విషయాలు యొక్క పేరు లో. కాబట్టి argc మరియు argv ఉంటాయి ప్రధాన పరామితులు. వాదనలు ఏమి మీరు నిజంగానే ఆ పారామితులు లో పాస్. సో అక్కడ నేను 4 foo, 4 కాల్ చేసినప్పుడు నేను ప్రయాణిస్తున్న నేను వాదన ఉంది. మరియు దాని లోపల పారామితి లేదా, foo, విలువ 4 తీసుకుంటుంది 4 నుండి వాదన. ప్రేక్షకులు: [వినబడని]? రాబ్: N బార్ ఒక స్థానిక వేరియబుల్ ఉంది. N, ఇప్పటికీ foo స్థానిక కానీ ఇది foo ఒక పారామితి ఉంది. ఇది ఒక స్థానిక వేరియబుల్ కాదు. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: foo కేవలం కాల్ బార్ మరియు సంసార బార్ రాబడి తిరిగి. ప్రేక్షకులు: [వినబడని]? రాబ్: అవును, కేవలం బహుళ చూడండి ఫ్రేములు స్టేక్. అవును? ప్రేక్షకులు: ఎందుకు foo అని పిలిచేవారు printf ముందు? రాబ్: ఎందుకు foo printf ముందు పిలిచారు? నేను చూపుతుంది కాబట్టి, బదులుగా, ఏదో ఒకటి Int వంటి x 4 వాటిలో foo సమానం మరియు అప్పుడు x ముద్రించబడింది. కానీ బదులుగా, నేను ఫంక్షన్ కలిపి printf వాదన కాల్. కానీ నోటీసు మేము నిజంగా కాదు మేము వరకు printf కాల్ అమలు 4 foo ఏమి దొరుకుతుందని. కాబట్టి మేము ఈ విశ్లేషించడానికి చూడాలని. మరియు ఆ పని యొక్క మాత్రమే ఒకసారి వెళ్తున్నారు తిరిగి వచ్చి ఈ విశ్లేషించడానికి. అవును? ప్రేక్షకులు: రెండు బార్ నుండి [వినబడని] విలువ, మనం [వినబడని] లేదు? రాబ్: వారు పూర్తిగా పూర్ణాంకానికి ఉండాలి. ఆ పై ఆకర్షించింది లేదు పలుసార్లు. కాబట్టి అది Int బార్ మరియు Int ఉండాలి ఆ రెండూ foo పూర్ణాంకాల వస్తుంటాయి. వారు వెళ్లి కాకపోతే శూన్యం మాత్రమే అసలైన విలువలు తిరిగి. అవును? ప్రేక్షకులు: మీరు ఒక లైన్ కలిగి ఉంటే పైన తిరిగి, [వినబడని]? రాబ్: తిరిగి పైన ఒక లైన్? ప్రేక్షకులు: అవును. ఇలా మీరు printf మరియు [వినబడని] చేస్తే, రెండుసార్లు ప్రింట్ చేస్తుంది? రాబ్: foo లోపలి కాబట్టి? మేము ఇక్కడే ఒక printf కలిగి ఉంటే? ప్రేక్షకులు: అవును. రాబ్: ఉంటే కాబట్టి మేము ఒక printf హక్కు ఇక్కడ, అది ఒకసారి ప్రింట్ చేస్తుంది. మేము ఒకసారి కుడి foo కాల్ నుండి ఇక్కడ అప్పుడు మేము printf హిట్ చేస్తాము. అప్పుడు మేము బార్ పిలుస్తాను. ఆపై foo చేరుకుంటాయి. అంతే. మేము మాత్రమే ఎప్పుడూ ఎదుర్కునే ఒకసారి printf. అవును? ప్రేక్షకులు: [వినబడని] మేము మొదటి ఉన్నాము ఎందుకంటే printf foo కాల్ printf కాల్ మరియు అప్పుడు మేము అక్కడ చేస్తున్నారు వాదనలు. రాబ్: సిద్ధాంతం కాబట్టి, కాదు printf foo కాల్? సో సంఖ్య. సి అన్నారు జస్ట్ ఆర్డర్ మేము ముందు ఈ విషయాలు ఉంది అమలు వాదనలు అన్ని ఒక ఫంక్షన్ కాల్ ఫంక్షన్ కలిగి పూర్తిగా నిర్ధారణ. కాబట్టి ఈ పూర్తిగా పరీక్షించబడుతుంది? అవును, అది కేవలం ఒక స్ట్రింగ్. ఇది కేవలం ఒక విలువ. అప్పుడు మేము పూర్తిగా కలిగి ఈ విశ్లేషించడానికి. ఈ ఇప్పుడు అన్ని యొక్క, పూర్తయితే దాని వాదనలు పరిశీలించిన ఉంటాయి. ఇప్పుడు మేము చేయవచ్చు printf కాల్. అవును? ప్రేక్షకులు: ఒక ప్రశ్న అడిగారు. మీరు ఒక గర్జన ఫంక్షన్ కలిగి ఉంటే, తప్పక మీరు తిరిగి సెమికోలన్ ఉందా? రాబ్: మీరు తిరిగి సెమికోలన్ లేదు మీరు ఒక గర్జన ఫంక్షన్ ఉంటే. సరే. కాబట్టి ఇప్పుడు కొన్ని కుప్ప విషయం. కాబట్టి కుప్ప మేము వ్యవహరించే చూడాలని ఎలా ఉంది డైనమిక్ మెమరీ నిర్వహణ. మరియు ఈ నేరుగా తో విభేదిస్తుంది మేము ఆటోమేటిక్ అంటారని స్టాక్ మెమరీ నిర్వహణ. స్టాక్ కాబట్టి, మీరు నిజంగా ఎప్పుడూ ఎలా స్థానిక వేరియబుల్స్ వ్యవహరించే ముందుకు మరియు అన్ని ఆఫ్ popped చేస్తున్నారు ఈ స్టాక్ ఫ్రేమ్లలో మరియు అన్ని అంశాలను. మీరు దాని గురించి ఆందోళన చెందనవసరం లేదు. ఇది స్వయంచాలక. కాబట్టి కుప్ప మాన్యువల్ ఉంది. మరియు [వినబడని] ఈ విధులను నుండి వస్తుంది malloc మరియు ఉచితం. ఇక్కడ మరొక కార్యక్రమం. మేము చేస్తున్నా అన్ని mallocing ఉంది పూర్ణాంకం. మేము స్టార్ X లో నిల్వ చేస్తున్నారు. కోర్సు యొక్క, మేము తనిఖీ చేయాలి X శూన్య ఉంటే చూడటానికి. అప్పుడు మేము ఏమి సెట్ చూడాలని X 50 కు సూచిస్తుంది. కు సూచిస్తుంది ఏమి X ముద్రించు ముద్రణ x, మరియు అప్పుడు ఉచిత x. కాబట్టి ఎలా ఈ వాస్తవానికి చూడండి అన్నారు మేము మా స్టాక్ మరియు కుప్ప వద్ద చూస్తే? కాబట్టి మేము మళ్ళీ మొదలు పెడతారేమో. ముందు గా మా స్టాక్ దిగువన. నిన్ను నేరుగా నిండుగా గుర్తుంచుకోండి స్టాక్ వ్యతిరేకిస్తోంది? కాబట్టి మేము చూడాలని అక్కడికి మా కుప్ప. మా స్టాక్ దిగువన కాబట్టి, మేము కలిగి ప్రధాన కోసం మా స్టాక్ ఫ్రేమ్. అది argc, argv కోసం స్థలాన్ని, మరియు మేము ఇప్పుడు ఒక స్థానిక వేరియబుల్ x, కలిగి ఇది ఒక పూర్ణాంకానికి నక్షత్రం. కాబట్టి మేము iterate చూడాలని ఈ కార్యక్రమం ద్వారా. మేము కలిగి మొదటి విషయం malloc కాల్. కాబట్టి మేము malloc కాల్ చేస్తున్న. Malloc ఒక ఫంక్షన్ ఉంది. ఇది ఒక స్టాక్ ఫ్రేమ్ పరుచుట. మనం malloc కు ప్రయాణిస్తున్న? ఆ లోపల వెళ్ళడానికి జరగబోతోంది స్టాక్ ఫ్రేమ్. మేము 4 n, పరిమాణం ప్రయాణిస్తున్న చేస్తున్నారు. కాబట్టి ఆ malloc కు పంపబడును. Malloc ఏమి చేస్తుంది? ఇది మాకు కుప్ప మీద కొన్ని అంతరిక్ష పనిచేయకుండా. కాబట్టి మేము కుప్ప వెళ్ళండి చూడాలని. మరియు మేము పట్టుకొను చూడాలని కుప్ప నుండి 4 బైట్లు. కాబట్టి యొక్క ఆ కల్పించడానికి అనుమతిస్తాయి ఏకపక్ష చిరునామా. 0x123 జస్ట్ ఒక నటిస్తారు కుప్ప అని చిరునామా. కాబట్టి ఆ లోపలి నిజానికి ఏమిటి చిరునామా Ox123 మెమరీ ప్రాంతంలో? గార్బేజ్. కాబట్టి మేము అది ఏదైనా నిల్వ లేదు. కాబట్టి వరకు మేము తెలిసిన ఏదైనా కావచ్చు. మీరు అది సున్నా వార్తలు భావించవచ్చు. ఇది సున్నా ఎక్కువగా ఉంది. కాబట్టి ఇప్పుడు, malloc తిరిగి వస్తుంది. మరియు మేము ఉన్నప్పుడు malloc రాబడి ఏమి చేస్తారు? మేము తిరిగి ఏమి సెట్. మేము సమానంగా x సెట్ ఏమి ఇది తిరిగి. సో వాట్ అది తిరిగి? ఆ ఎందుకంటే ఇది 0x123 తిరిగి మెమరీ యొక్క బ్లాక్ చిరునామా ఆ కేవలం కుప్ప లో కేటాయించింది. కాబట్టి 0x123 X ఇప్పుడు సెట్ కావడం తిరిగి 0x123 కన్నా, చిత్రాల, మేము తరచుగా ఒక వాస్తవ కలిగి X వంటి డ్రా ఆ బ్లాక్ సూచించే బాణం. కానీ x కేవలం ఆ చిరునామా నిల్వ. కాబట్టి ఇప్పుడు మేము x శూన్య ఉంటే తనిఖీ చేశారు. అది శూన్య కాదు. మేము ఆ malloc విజయవంతమైన నటిస్తారు. కాబట్టి ఇప్పుడు స్టార్ X 50 సమానం. కాబట్టి నటుడు అది అర్థం గుర్తు ఆ చిరునామా వెళ్ళండి. కాబట్టి 0x123 మేము చేయబోతున్నామని ఆ చిరునామా వెళ్ళండి. కాబట్టి ఆ అక్కడ మాకు అప్ తెస్తుంది. మేము ఆ చిరునామా వద్ద ఏం చేస్తున్నారు? మేము 50 నిల్వ చేస్తున్నారు. కాబట్టి ఈ లైన్ తర్వాత, అది ఏమిటి విషయాలు లాగా వెళ్తున్నారు. కాబట్టి ఇప్పుడు అది ఇకపై వార్తలు అక్కడ చెత్త. ఇప్పుడు మేము 50 ఆ అని తెలుసు ముఖ్యంగా చిరునామా ఎందుకంటే మేము ఆ దానిని సెట్. సిద్ధమేనా? కాబట్టి ఇప్పుడు మేము F ప్రింట్ చూడాలని. కాబట్టి మొదటి మేము స్టార్ ముద్రించవచ్చు x చూడాలని. కాబట్టి స్టార్ X అంటే ఏంటి? మళ్ళీ, స్టార్ x కు వెళ్ళి అర్థం x సూచించే ఆ విషయం. కాబట్టి x ఆ 0x123 గో నిల్వ. మేము 50 పొందండి. కాబట్టి ఆ F ప్రింట్. మరియు అది 50 ముద్రించడానికి జరగబోతోంది అర్థం. ఆపై తిరిగి. ఆపై మేము రెండవ printf కలిగి. మేము ఇప్పుడు శాతం పేజి ఉన్నారు. మీరు చూడని ఉంటే, ఆ కేవలం మీరు ఒక పాయింటర్ ప్రింట్ ఎలా. కాబట్టి మేము, శాతము ఐ f, మరియు ఇప్పటికే వారిలో అన్ని. కాబట్టి శాతం పే, ఒక పాయింటర్ ప్రింట్. కాబట్టి x ఒక పాయింటర్ ఉంది. కాబట్టి మేము కూడా ముద్రించవచ్చు x చూడాలని ఉంటే, మేము లోపల నిజానికి ఏమిటి ప్రింటింగ్ చేస్తున్నారు కాబట్టి మొదటి 0x123, x, ముద్రణ F 50 ప్రింట్ అన్నారు. రెండవ ముద్రణ F అన్నారు అవును 0x123 ప్రింట్? ప్రేక్షకులు: మీరు శాతం ఉపయోగిస్తున్నారా X ఒక పాయింటర్ ప్రింట్? రాబ్: సో మీరు శాతం ఉపయోగించగలను X ఒక పాయింటర్ ప్రింట్? కాబట్టి, మీరు కానీ శాతం x కేవలం ఉంది సాధారణంగా, వంటి మీరు కొన్ని కలిగి ఉంటే పూర్ణాంక మరియు మీరు ముద్రించడానికి కావలసిన అది ఒక హెక్సాడెసిమల్ వంటి. మీరు అలా ఎలా కేవలం వార్తలు. అయితే, శాతం d చేస్తాను దశాంశంగా ప్రింట్. మేము శాతం పొందండి అని వార్తలు D. నేను కేవలం పూర్ణసంఖ్య. శాతం పేజి ప్రత్యేకంగా గమనికలు కోసం. కాబట్టి x ఒక పాయింటర్ ఉంది. మేము శాతం పేజి ఉపయోగించాలనుకుంటున్నాను. కానీ శాతం x పని కాలేదు. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: అవును. ఈ కోసం కనీసం కాబట్టి కాల్ నేను ఇక్కడ అది చేర్చలేదు. కానీ ఈ రెండు వాదనలు తప్పనిసరిగా ఉంటాయి ఈ స్టాక్ ఫ్రేమ్ లోపలి ఏ స్థానిక వేరియబుల్స్ తో పాటు printf ఉపయోగించి నిర్మాణము. ఆపై తదుపరి కాల్ printf ఇప్పుడు వరకు printf లోపల స్టాక్ ఫ్రేమ్ ఉంది శాతం పేజి బాక్ స్లాష్ n మరియు సంసార x యొక్క విలువ 0x123 ఇది ఉంది. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: ఇది ఏదో ప్రింట్ చేస్తాము ఈ కనిపిస్తోంది. ప్రేక్షకులు: [వినబడని]. రాబ్: సో అది చిరునామా రూపంలో ముద్రిస్తుంది. ఇది ఒక చిరునామా కనిపిస్తోంది. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: ఎందుకు ఏమిటి? ప్రేక్షకులు: [వినబడని]? రాబ్: ఎందుకు ఈ పాయింటర్ 4 బైట్లు? కాబట్టి ఒక మొత్తం బంచ్ ఉన్నాయి ఈ ముందు 0 యొక్క. కనుక ఇది నిజంగా 0x0000000123 వార్తలు. ఒక 64-bit వ్యవస్థ, అక్కడ ఉంటుంది మరింత సున్నాలు యొక్క మొత్తం బంచ్. అవును? ప్రేక్షకులు: [వినబడని]. రాబ్: సో మొదటి printf print-- అన్నారు ప్రేక్షకులు: [వినబడని]. రాబ్: అవును, అది ముద్రించడానికి జరగబోతోంది ఏమి x సూచించే ఉంది. స్టార్ ఈ ఏమి చెప్పారు విషయం చెబుతోంది. ఇది సాధించండి. కాబట్టి అది సూచించే ఏమి? 50. ఇది సాధించండి. అంటే మనం ప్రింట్ చూడాలని ఏమిటి. తదుపరి, అయితే, మేము ఉన్నాము కేవలం స్వయంగా x ప్రింటింగ్. F లోపలి ఏమిటి? 0x123. సరే. ఆపై, చివరకు, మేము ఉచిత ఉంటుంది. మనం విడిపించేందుకు ప్రయాణిస్తున్న? మనకు x ప్రయాణిస్తున్న చేస్తున్నారు. నేను వాస్తవానికి ప్రదర్శించబడతాయి ఆ సమయం ఇది స్టాక్ ఫ్రేమ్ లో. కాబట్టి మేము విలువ ప్రయాణిస్తున్న చేస్తున్నారు 0x123 విముక్తికై. కాబట్టి ఇప్పుడు తెలుసు ఉచిత, అన్ని కుడి, నేను నిండుగా వరకు వెళ్ళాలి మరియు ఆ మెమరీ ఉచితం. ఇది ఇకపై ఉపయోగించి ఏమి చిరునామా 0x123 వద్ద ఉంది. కాబట్టి ఉచిత విడుదల కానుంది కుప్ప నుండి ఆ. ఇప్పుడు మా కుప్ప మళ్ళీ ఖాళీగా ఉంది. మేము ఏ మెమరీ లీకేజ్. ఇప్పుడు ఉచిత చేరుకుంటాయి. ఆ x ఇప్పటికీ 0x123 ఉంటుంది గమనించండి. కానీ ఇప్పుడు చెల్లుబాటు అయ్యే మెమరీ కాదు. మేము ఇకపై dereference X తప్పక. అవును? ప్రేక్షకులు: 0 అనవసరమైన రాబడి? రాబ్: 0 అనవసరమైన returen ఉంది? అవును. మేము అక్కడే ఎందుకంటే ఆ చాలు మేము గాలి కోసం తిరిగి ఒకటి. కాబట్టి అవును, అనుమతిస్తుంది, వంటిది తిరిగి 0 ఉన్నాయి. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: సో ఉచిత ఎక్స్ తర్వాత, ఏమి ఏమవుతుంది మేము పాయింటర్ dereference ప్రయత్నించినప్పుడు? ఇది ఏమీ తప్పు వెళ్ళే అవకాశం ఉంది. మేము ఇప్పటికీ 50 పొందుతారు ఇది సాధ్యం. ఇది మెమరీ ఉంది, కూడా, అవకాశం ఇప్పుడు ఏదో కోసం వాడుతున్నారు. కనుక ఇది వివరింపబడని ప్రవర్తన అనిపిస్తుంది. మరియు వివరింపబడని ఏదైనా అర్థం జరగవచ్చు. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: కాదు, కాబట్టి మీరు కేటాయించి ఏదో x. కాబట్టి ఇక్కడే ఉంటే మేము x సమానం అన్నారు malloc ఏదో else-- malloc పరిమాణం event-- ఆ మూలమైన బ్లాక్ మెమరీ విముక్తి లేదు. మరియు మేము అధికారికంగా దానిని కోల్పోయారు. ఆ మెమొరీ లీక్ ఉంది. మేము అన్ని సూచనలు కోల్పోయి మెమరీ ఆ నిరోధించేందుకు. మనం ఇది ఉచితం మార్గమే లేదు. OK, కాబట్టి పూర్తి అప్పుడు 0 అంటే తిరిగి. All right, కాబట్టి స్టాక్ ఓవర్ఫ్లో. ఇక్కడ ఆలోచన ఏమిటి? కాబట్టి, గుర్తు, కుప్ప డౌన్ అన్నారు. స్టాక్ అప్ అన్నారు. కాబట్టి ఈ ఉపన్యాసం నుంచి ఉదాహరణకు, ఉంది నేను ఎక్కడ ప్రధాన కేవలం అన్నారు, అనుకుంటున్నాను అన్నారు ఈ ఫంక్షన్ foo, కాల్ పైగా పునరావృతంగా కూడా కాల్ మరియు మళ్ళీ. కాబట్టి ఫ్రేములు వెళ్తున్నారు స్టేక్ సరిగ్గా అదే పని. కాబట్టి మనం ప్రధాన తో ఆరంభమవుతుంది చేస్తున్నారు దిగువన స్టాక్ ఫ్రేమ్. అప్పుడు ప్రధాన, foo కాల్ అన్నారు ఇది ఒక స్టాక్ ఫ్రేమ్ పొందగలిగిన. అప్పుడు foo foo కాల్ అన్నారు మళ్ళీ, ఇది పొందగలిగిన మరో స్టాక్ ఫ్రేమ్. ఆపై మళ్ళీ, మళ్ళీ, మళ్ళీ, మళ్ళీ వరకు, చివరికి, మేము అమలు కుప్ప లోకి. కాబట్టి ఈ మేము ఎంత ఉంది ఒక స్టాక్ ఓవర్ఫ్లో. మరియు ఈ సమయంలో, మీరు తప్పు seg. లేదా మీరు నిజంగా seg ముందు లోపం ఇష్టం ఈ సమయంలో కానీ అవును. ప్రేక్షకులు: కోర్ డంప్ seg లోపం అదే? రాబ్: సో మీరు విభజన చూస్తారు తప్పు ముడి వేసారు. మీరు ఒక కోర్ డంప్ ఉన్నప్పుడు పొందండి మీరు తప్పు seg. మరియు అది అన్ని ఒక డంప్ వంటిది మీ ప్రస్తుత మెమరీ విషయాల కాబట్టి మీరు ప్రయత్నించండి మరియు గుర్తించడానికి చేసే ఎందుకు మీరు విమర్శలకు గురయ్యారు seg. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: సో ఒక విభజన లోపంగా అంటే ఒక స్టాక్ ఓవర్ఫ్లో ఉంది. కాబట్టి అవసరం లేదు. విభజన లోపంగా మీరు ఉన్నాం ఒక విధంగా హత్తుకునే మెమరీ మీరు ఉండకూడదు. కాబట్టి ఆ రకమైన ఒక మార్గం, ఎప్పుడు ఉంది మీరు మేము హత్తుకునే మొదలు, ఓవర్ఫ్లో స్టేక్ మేము ఉండకూడదు విధంగా మెమరీ. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: ఒక అనంతమైన లూప్ యొక్క లోపల కాబట్టి. ఇలా, ఈ ఒక పునరావృత అనంతం వంటిది లూప్ మరియు మేము మరొక పొందండి స్టాక్ ప్రతి సమయం ఫ్రేమ్. కానీ కేవలం ఒక సాధారణ యొక్క లోపల అనంతం one-- అయితే అలాగే, యొక్క కూడా ముద్రించడం సాధ్యం లెట్ f-- ఏదో ఒకటి. ఏది. మేము పొందడానికి వెళ్ళడం లేదు చేస్తున్నాం మరో స్టాక్ ఫ్రేమ్. మేము కేవలం వెతికినా ఉంచడానికి వెళుతున్న ఈ సింగిల్ ఇన్స్ట్రక్షన్ పైగా. స్టాక్ పెరుగుతున్న లేదు. ఇది ప్రతి పునరావృత వాస్తవం వార్తలు కాల్ మాకు ఒక స్టాక్ ఫ్రేమ్ కల్పించడం. మేము ఒక స్టాక్ ఓవర్ఫ్లో పొందండి ఎందుకు ఆ వార్తలు. అవును? ప్రేక్షకులు: మీరు చేస్తే మీరు పొందడానికి అన్నారు లూప్ మరియు తరువాత [వినబడని]? రాబ్: ఉంటే అయితే లూప్ యొక్క లోపల కాబట్టి ఒక printf ఉంది, మీరు ఇప్పటికీ చేస్తాను seg లోపం. నేను విషయాలు తికమక కోరుకోలేదు. ఇది లూప్ చేస్తాను. మీరు ఒక స్టాక్ పొంది printf కోసం ఫ్రేమ్. తరువాత printf తిరిగి ఉంటుంది. అప్పుడు మీరు మళ్ళీ లూప్ మీరు. మీరు ఒక స్టాక్ పొంది printf కోసం ఫ్రేమ్. ఇది తిరిగి ఉంటుంది. సింగిల్ స్టాక్ ఫ్రేమ్. కాబట్టి మీరు ఈ అనంత పొందడానికి లేదు స్టాక్ ఫ్రేములు అమర్చాడు. ప్రేక్షకులు: [వినబడని]? రాబ్: అవును. కాబట్టి ఈ స్టాక్ ఓవర్ఫ్లో జరుగుతుంది ఈ ఎవరూ ఎందుకంటే foo కాల్స్ వస్తుంటాయి. మేము తిరిగి ఉంటే, అప్పుడు మేము అలా స్టాక్ ఫ్రేములు ఓడిపోయిన ప్రారంభం. మరియు తర్వాత మేము ఓవర్ఫ్లో పేర్చడాన్ని కాదు. మీరు ఒక బేస్ కేసు అవసరం ఎందుకు ఆ వార్తలు మీ వ్యక్తిగత విధులు కోసం. అవును? ప్రేక్షకులు: సంభావ్య పరిమాణం మరియు కుప్ప ఒకే స్టాక్ అన్ని కార్యక్రమాలు? రాబ్: సుమారు. స్టాక్ సంభావ్య పరిమాణం మరియు అన్ని కార్యక్రమాలు అదే కుప్ప? సుమారు. కొన్ని పొరబాటున ఉంది తోబుట్టువుల స్టాక్ మొదలవుతుంది మరియు పేరు కుప్ప మొదలవుతుంది. మీరు ఒక మొత్తం చాలా కలిగి జరిగితే ప్రపంచ వేరియబుల్స్ మరియు విషయాలు మీరు వాటిని కొన్ని అంతరిక్ష నుండి సర్వులు మీ కుప్ప కోసం. ఒక 64-bit వ్యవస్థ మీద, మీరు వాస్తవంగా అనంతం మెమరీ చేశారు. కేవలం చాలా ఉంది. 32 బిట్స్ మరియు 64 బిట్స్, ఆ మధ్య ఒక ముఖ్యమైన తేడా ఉంది. మీరు మరింత మొత్తం చాలా పొందగలిగిన చేస్తున్నారు ఒక 64-bit స్టాక్ మరియు కుప్ప స్పేస్ వ్యవస్థ కేవలం ఇంకా ఉంది ఎందుకంటే వారు ఉపయోగించే చిరునామాలు. కానీ ఒక వ్యక్తి వ్యవస్థ మీద, అది రెడీ స్టాక్ సుమారు అదే మొత్తం మరియు కుప్ప స్పేస్. అన్ని కుడి. గత విషయం సంగ్రహం. కాబట్టి మీరు ఈ ప్రక్రియను తెలుసుకోవాలి. నాలుగు పెద్ద దశలు ఉన్నాయి. మొదటి ఒకటి ఉండాలి గుర్తుంచుకోవడానికి సులభంగా ఉంటుంది. ప్రీ ప్రాసెసింగ్. ఇది ముందస్తుగా ఉపసర్గ ఉంది. కాబట్టి అది అన్నిటికీ ముందు వస్తుంది. గుర్తు విషయం హాష్ ఉంది. కాబట్టి హాష్ నిర్వచిస్తుంది మరియు హాష్ కలిగి ఆ అన్ని లో. ఆ అన్ని ముందు ప్రోసెసర్ నిర్దేశకాలు. ఈ విషయాలు ఉన్నాయి ముందు ప్రాసెసర్ జాగ్రత్త తీసుకుంటుంది. కాబట్టి ముందుగా ప్రాసెసర్ ఏమి చేస్తుంది? ఇది నిజంగా మూగ విషయం. ఇది సామర్థ్యం అన్ని ఈ అన్ని ఉన్నాయి కాపీ, మరియు కట్, మరియు పేస్ట్ కార్యకలాపాలు. కాబట్టి హాష్ ప్రామాణిక I0 డాట్ h ఇచ్చింది. చేయడం ఏమిటి? ఇది ప్రామాణిక I0 డాట్ h పట్టుకుని ఫైల్ మరియు టాప్ లో పేస్ట్ ఎక్కడికి హాష్ కలిగి చెప్పారు ప్రామాణిక I0 డాట్ h. మరియు ఏ హాష్ మేము చేసిన నిర్వచించే చూసిన, ఏమి అని? దీని హాష్ ఆ విలువ కాపీ మరియు అతికించడానికి నిర్వచిస్తారు నిర్వచించిన ఎక్కడ మీరు విలువ ఉపయోగిస్తున్నారు. కాబట్టి ప్రాసెసర్ కేవలం నిజంగా చేస్తుంది సాధారణ టెక్స్ట్ ఆధారిత కార్యకలాపాలు. ఇది స్మార్ట్ ఏమీ లేదు. కాబట్టి అన్నిటికీ ఉంది మరింత సంక్లిష్టంగా. కాబట్టి ఇప్పుడు ఆ ప్రాసెసర్ ఉంది పూర్తి, మేము నిజానికి తయారు. కాబట్టి కంపైల్ అర్థం ఏమిటి? మేము ఇప్పుడు సి కోడ్ నుండి వెళుతున్న అసెంబ్లీ కోడ్. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: అవును, మేము ఆ ఆకర్షించింది. కాబట్టి కంపైల్. మేము అసెంబ్లీకి సి నుండి వెళుతున్న. కాబట్టి ఈ ఒక వాస్తవ భాష మార్పు. స్వయంగా కంపైల్ నుండి వెళుతున్న అంటే అధిక స్థాయి భాష తక్కువ స్థాయి భాష. మరియు C అధిక స్థాయి భాష అసెంబ్లీ పోలిస్తే. అసెంబ్లీ ఏమిటి? అని దాని సూచనలను, అందంగా చాలా మీ CPU కోసం చేసిన. కానీ మీ కంప్యూటర్లో ఇప్పటికీ చేస్తుంది అసెంబ్లీ అర్థం కాదు. ఇది మాత్రమే వాటిని మరియు సున్నాలు అర్థం. కాబట్టి తదుపరి దశలో సమీకరించడం ఇది ఈ సూచనలను నుండి మాకు తెస్తుంది మీ CPU అర్థం మరియు నిజానికి , వాటిని అనువదిస్తుంది వాటిని మరియు సున్నాలు. బైనరీ అసెంబ్లీ సి సో. కానీ నేను ఇంకా ఒక ఎక్జిక్యూటబుల్ లేదు. కాబట్టి CS50 లైబ్రరీ యొక్క ఆలోచించవచ్చు. మేము ఒక బైనరీ తో మీరు అందించిన GetString ఉంది ఈ CS50 లైబ్రరీ, మరియు GetInt మరియు అన్ని ఆ. కానీ CS50 లైబ్రరీ మరియు స్వయంగా యొక్క ఎక్జిక్యూటబుల్ కాదు. ఇది ఒక ప్రధాన చర్య లేదు. ఇది బైనరీ కేవలం ఒక బంచ్ వార్తలు మీరు ఉపయోగించవచ్చు. కాబట్టి లింకింగ్ మేము కలిసి అన్ని తీసుకుని ఎలా ఉంది ఈ వివిధ బైనరీ ఫైళ్ళను ఒక వాస్తవ ఎక్జిక్యూటబుల్ లోకి. మీరు టైప్ చేసే వన్ డాట్ ఒక డాట్ స్లాష్. కాబట్టి ఈ ఫైలు వంటిది మీరు , రాశాడు - సంసార మీ ప్రోగ్రామ్ is-- Ceaser డాట్ సి. కానీ ఇప్పుడు అది సంకలనం చేసిన బైనరీ డౌన్. కాబట్టి Ceaser డాట్ ఓ. ఈ మా CS50 బైనరీ గ్రంథాలయాలు ఉంది. మరియు వారు కలిపి చేస్తున్నారు ఒకే ఎక్జిక్యూటబుల్ లోకి. అవును? ప్రేక్షకులు: [వినబడని]? రాబ్: సో మొదటి ఉన్నాయి, గుర్తు ఉన్నాయి మరియు వాస్తవానికి ఒక ఉంది హాష్ ముందు ప్రాసెసర్ అడుగు. కానీ ఆ ప్రత్యేక ఉంది. మీరు ఏ విధులు ఉపయోగించి కాకపోతే ఆ అప్పుడు మీ ఫైల్ యొక్క వెలుపల ఉన్నాయి, లేదు, మీరు ఏదైనా లింక్ అవసరం లేదు మీరు ప్రతిదీ కలిగి నుండి. అన్నాడు ఆ printf లో లింక్ అవుతోంది. మీరు printf ఉపయోగించడానికి ఉంటే, ఏదో వార్తలు ఆ లింక్ చేయాలి మీరు వ్రాసే లేదు ఎందుకంటే. మరియు, నిజానికి, printf స్వయంచాలకంగా ఉంది లో లింక్. మీరు తెలుసు ఎలా కమాండ్ లైన్ వద్ద లేదా మీరు కలిగి చూడండి, తయారు టైప్ లింక్ ఇది డాష్ L CS50, CS50 లైబ్రరీలో? ఆ వంటి printf, మరియు stuff, వెళ్ళి స్వయంచాలకంగా లింక్ కు. ఏదైనా ఏ ఇతర ప్రశ్నలు? ప్రేక్షకులు: [వినబడని]? రాబ్: లింకింగ్? మేము ఒక మొత్తం బంచ్ కలిగి వివిధ బైనరీ ఫైళ్లు. ఈ కానానికల్ ఉదాహరణ మేము ఉపయోగించే CS50 లైబ్రరీ ఉంది. మేము కంపైల్ మరియు మీరు ఇచ్చిన ఈ CS50 లైబ్రరీ బైనరీ. మీరు GetString ఉపయోగించడానికి కావలసిన మీ ప్రోగ్రామ్ లో. కాబట్టి మీరు వెళ్లి, GetString ఉపయోగించడానికి. కానీ నా బైనరీ కోడ్ లేకుండా GetString, మీరు మీ కోడ్ కంపైల్ చేసినప్పుడు డౌన్, మీరు నిజంగా అమలు కాదు మీ కార్యక్రమం GetString స్ట్రింగ్ ఎందుకంటే ఇంకా పూర్తిగా నిర్వచించిన లేదు. మీరు నా బైనరీ లో లింక్ ఇది మాత్రమే అన్ని, ఇప్పుడు GetString కలిగి కుడి, నేను నిజంగా, GetString అమలు. నా ఫైలు పూర్తయింది. నేను ఈ అమలు చేయవచ్చు. అవును? ప్రేక్షకులు: మార్చేందుకు లింకింగ్ లేదు బైనరీ ఎక్సిక్యూటబుల్ ఎలా? మీరు ఇతర లేదు కాబట్టి కూడా గ్రంధాలయాలు, అది ఇప్పటికీ కాదు అనువదించడానికి అవసరం [వినబడని]? రాబ్: సో ఒక ఎక్జిక్యూటబుల్ బైనరీ లో ఇప్పటికీ ఉంది. ఇది కేవలం ఒక మొత్తం కలపడం యొక్క బైనరీలు కొంత. ప్రేక్షకులు: మీరు చాలా ధన్యవాదాలు. రాబ్: కాదు సమస్య. ఏదైనా ఇతర ప్రశ్నలు? లేకపోతే, మేము అన్ని సెట్ చేస్తున్నాం. అన్ని కుడి. ధన్యవాదాలు. [చప్పట్లు] ప్రేక్షకులు: ధన్యవాదాలు. రాబ్: అవును.