[Powered by Google Translate] [4 వ వారం కొనసాగిన]
[డేవిడ్ J. మలన్ - హార్వర్డ్ యూనివర్శిటీ]
[ఈ CS50 ఉంది. - CS50.TV]
>> ఈ CS50, మరియు ఈ వారం 4 ముగింపు.
కొన్ని మంచి వార్తలు మరియు కొన్ని చెడు వార్తలను కాబట్టి.
సోమవారం సంఖ్య ఉపన్యాసం, ఏ సమస్య వచ్చే వారం సెట్. [విద్యార్థులు ప్రోత్సహిస్తున్నారు]
మీరు ఈ వెళ్లి కౌంటీ ఇష్టం వెళ్ళి లేదు.
కానీ మేము వచ్చే బుధవారం బదులుగా ఈ ఉన్నాయి,
మరియు తరువాత శుక్రవారం మేము ట్రాక్ లో ఉండడానికి వీలుగా సిలబస్ 1 శుక్రవారం ఉపన్యాసం శాతం కూడా ఉంది.
అయితే ప్రతి సాధారణ వంటి చిత్రీకరించారు చేయబడుతుంది, కాబట్టి ఆందోళన లేదు.
>> మరియు సంబంధించిన మేము వారం యొక్క ముగింపు వైపు చేస్తాను ఏమి 0 క్విజ్ కు
కోర్సు యొక్క హోమ్ cs50.net వివరణ న పోస్ట్
అది మొదటి క్విజ్ విషయానికి వస్తే మీరు ఉండాలి అంచనాలను ఏ విధమైన.
సాధారణంగా, దానిలో బహుళఐచ్చిక, నిజం తప్పుడు, చిన్న సమాధానం, చిన్న కోడింగ్ సమస్యలు ఉంటుంది.
మీరు సమానమైన అమలు అంచనా కావడం లేదు
మీరు ఒక pset న చూడండి ఒక సమస్య కారణంగా, ఇది మీరు కంప్యూటర్ కలిగి
మరియు ఒక డీబగ్గర్ మరియు వంటి, కానీ చిన్న కోడింగ్ సమస్యలు ఉంటుంది.
>> నిజానికి, CS50 క్విజ్లు దేనిని పొందడానికి ఉత్తమ గైడ్ వంటివి
cs50.net వెళ్ళండి ఉంది,, క్విజ్ లింక్ వెళ్ళండి
మరియు మీరు క్విజ్ యొక్క విలువ గత కొన్ని సంవత్సరాల చూడగలరు.
జస్ట్ పాఠ్య ప్రణాళిక ఎప్పుడూ సంవత్సరాల అదే కాదు విషయాన్ని గ్రహించే.
కొన్నిసార్లు మేము కొన్నిసార్లు తీసివేయడం, జోడించండి
ఆ పాత క్విజ్లు ఒకటి కొన్ని టాపిక్ చూడండి అయితే
మీరు దాని గురించి మాట్లాడుతూ ఉంటాడు ఏ ఆలోచన కలిగి, అది కవర్ అని గాని యొక్క
లేదా మేము వాటిని కవర్ కాదు అని.
అయితే సమీక్షలు రూపంలో, ఈ ఆదివారం, సోమవారం, మరియు మంగళవారం
అలాగే ఆదివారం రాత్రి ఒక కోర్సు వ్యాప్తంగా సమీక్ష సమావేశాలు -
కోర్సు యొక్క హోమ్ పేజీలో ప్రకటించింది సమయం మరియు నగర -
మీరు అన్ని కోర్సు యొక్క టీచింగ్ సభ్యులు సమీక్షించడానికి ఒక అవకాశం ఉంది
విభాగంలో మరియు పూర్తి తరగతి రెండు ఈ సంవత్సరం భౌతిక,
మరియు ఆ అలాగే సాధారణ వంటి చిత్రీకరించారు చేయబడుతుంది.
>> అన్ని కుడి. కనుక తదుపరి శ్రమ లేకుండా, పయనంలో ఒక వ్యాఖ్య / విఫలం మరియు డ్రాప్ / జోడించండి.
మీరు గత రాత్రి నా గమనికలు చూసిన, మరియు ఇది నిజంగా కొన్ని అదనపు అభయమిచ్చిన ఉంది
మీరు ప్రత్యేకించి తక్కువ సౌకర్యవంతంగా లేదా మరొక మధ్య పొందినవారిలో ఉంటే
మరియు మీరు, మీ తలపై కేవలం కొద్దిగా ఫీలింగ్ చేస్తున్నారు
నిజానికి చాలా సాధారణ అని తెలుసుకుంటారు, మరియు స్థానంలో ఒక పుష్కల మద్దతు నిర్మాణం ఉంది,
ఆఫీస్ అవర్స్ నా ఇమెయిల్ గత రాత్రి అన్ని మరింత మెరుగుపరచడానికి ఉద్దేశం ఇది ఒకటి,
మరియు పాస్ వంటి ఒక ఎంపికను / ఈ వంటి తరగతి విఫలం కూడా గుర్తించడం
నిజంగా ఈ వంటి కోర్సు యొక్క అంచు రావడానికి విధానం వలె ఉద్దేశించబడింది,
తద్వారా మీరు ఆ 10, 15, 20 గంటల పాటు చేసిన మళ్ళీ ఉంటే
పనిచేసేలా కొన్ని pset పొందడానికి ప్రయత్నిస్తున్న మరియు మీరు అక్కడ మార్గం 90-95% కాదని మాకు తెలుసు
కానీ మీరు ఒక పాస్ లో, కొన్ని భీకర బగ్ కనుగొనేందుకు / విధమైన సరైందే అని మోడల్ విఫలం కాదు.
>> ఆలోచన విధానం తో మీరు మీ ఇతర psets దృష్టి వెళ్ళే ఉంది
లేదా నిద్ర లేదా మీరు దృష్టి కేంద్రీకరించాలి అని ఏ.
కాబట్టి మీరు ఈ వస్తున్న మంగళవారం వరకు లేదని గుర్తించడం - సాంకేతికంగా 5 వ సోమవారం,
కానీ అది చాలా, ఈ రాబోయే మంగళవారం ఒక సెలవు ఉంది - పాస్ నుండి మారడానికి / గ్రేడెడ్ లేదా పక్కకు విఫలం.
మరియు మీరు ఎత్తైన కొండ చరియ న నిజంగా ఉన్నారు మరియు మొత్తంగా పడిపోయాడు గురించి ఆలోచిస్తూ ఉంటే,
ఉపన్యాసం తర్వాత నన్ను పట్టుకోండి లేదా నాకు గమనిక డ్రాప్ చెయ్యండి.
మీరు దండం బిడ్ ముందు మేము కనీసం చాట్ మేము ఇష్టపడతాము.
అన్ని కుడి. కాబట్టి మేము చివరిసారి ఆఫ్ శిక్షణ చక్రాలు తీసుకోవడం మొదలు.
ముఖ్యంగా, మేము స్ట్రింగ్ దృష్టి సారించింది.
స్ట్రింగ్, CS50 లైబ్రరీలో ప్రకటించబడిన విషయం
ప్రత్యేకంగా cs50.h అనే ఫైల్ లో మేము ఈ వారం చూడండి ప్రారంభించగలరు ఇది.
కానీ స్ట్రింగ్ నిజంగా ఏదో ఒక సూక్ష్మీకరణ
ఒక కొంచం arcanely చార్ * వర్ణించారు ఉంది.
మేము గురించి తెలిసి చార్. ఇది కేవలం ఒక పాత్ర.
కానీ సోమవారం యొక్క * అంటే సూచిస్తారు? >> [విద్యార్థి] A పాయింటర్.
ఒక పాయింటర్. మరియు ఒక పాయింటర్ ఏది? >> [విద్యార్థి] ఒక చిరునామా.
>> ఇది ఒక చిరునామా, మెమరీలో స్థానం వంటిది.
ఒక చిరునామా లేదా నగర లేదా మెమరీ ఏమిటి?
మళ్లీ, మాకు అన్ని ఈ రోజుల్లో ఎక్కువగా ఒక ప్రదర్శన లేదా RAM యొక్క 2 గిగాబైట్ల ల్యాప్టాప్లు కలిగి
మరియు మీరు మెమరీ విలువ ఒక బిలియన్ లేదా 2 బిలియన్ బైట్లు కలిగివుంటాయి.
అది నిజంగా, అది భౌతికంగా ఎలా పట్టింపు లేదు
కానీ మీరు మీ స్వంత ల్యాప్టాప్ కలిగి వ్యక్తిగత బైట్లు అన్ని సంఖ్య చేసే విశ్వాసం పడుతుంది -
ఈ 0 బైట్, ఈ బైట్ 1, ఈ 2 బిలియన్ బైట్ ఉంది -
మరియు ఖచ్చితంగా ఒక కంప్యూటర్ చేస్తుంది ఏమిటి.
మీరు ఒకే ఒక పాత్ర స్థలాన్ని కేటాయించాలని చేసినప్పుడు, ఉదాహరణకు,
ఇది సహజంగా, మీ కంప్యూటర్ యొక్క మెమరీ లో ఎక్కడో జీవించడానికి ఉంది
మరియు దీనికి, 12345 బైట్ సంఖ్య వద్ద ఉంది
మరియు మీ కంప్యూటర్ యొక్క మెమరీ లో ఇక్కడ ఎక్కడో ఉంది.
మరియు ఆ పాత్ర యొక్క తరువాత చిరునామా 12345.
>> ఇప్పుడు, ఇప్పుడు ద్వారా ఇప్పటివరకు వారం 0 లో, మేము నిజంగా పట్టించుకునేది లేదు
మేము సాధారణంగా చిహ్నాలు ఉపయోగిస్తాయి పేరు మెమరీ విషయాల, నిల్వ చేయబడతాయి
వేరియబుల్స్, మరియు శ్రేణుల వాస్తవానికి మా వద్ద డేటా పొందడానికి.
కానీ సోమవారం మరియు అన్ని మరింత రోజుకి, మీరు ఇప్పుడు చూడాలని
రచన కార్యక్రమాలు అన్ని మరింత వ్యక్తీకరణ సామర్థ్యాలు
నిజంగా అయితే మీరు సరైనది అని ఒక కంప్యూటర్ యొక్క మెమరీ సవరించడానికి,
మంచి ప్రయోజనాల మరియు చెడు రెండూ,
దోషాలు ఈ విషయాన్ని తెలుసుకున్న ఈ సమయంలో ఒక సాధారణ ఫలితంగా.
కాని అది నిజంగా ఒక చార్ * అని శతకము
మరియు నేడు వాగ్దానం వంటి మేము Binky వచ్చి ఉంటుంది - యొక్క తిరిగి ముందుకు వెళ్ళి తెలపండి.
యొక్క ఇక్కడ ఒక చిన్న ఉదాహరణ వెళ్ళనిస్తున్నారని.
ఈ ఫైలు compare.c వంటి సేవ్, మరియు నాకు కేవలం ఇక్కడ కొన్ని టెంప్లేట్ కోడ్ పొందండి తెలియజేయండి లెట్
కాబట్టి stdio.h ఉన్నాయి, నాకు కూడా నాకు ఉంటాయి కల్పించడానికి అనుమతిస్తాయి cs50.h. నేను అక్కడ దగ్గరికి జూమ్ చేస్తాము.
నాకు ప్రధాన ప్రధాన Int, (తప్ప) రాయటం మొదలుపెట్టాలని, మరియు ఇప్పుడు నేను ఈ వంటి చేయాలని లెట్:
printf ("నాకు స్ట్రింగ్ ఇవ్వండి:") మరియు తర్వాత నేను స్ట్రింగ్ s GetString అవుతుంది ఉపయోగించే
యూజర్ నుండి ఒక స్ట్రింగ్ పొందడానికి, అప్పుడు నేను మరొక ఒక వినియోగదారుని అభ్యర్థించడం వెళుతున్న.
మరియు నేను పొందడానికి GetString ద్వారా వారిని అడగండి వెళుతున్న: ("నాకు మరొక స్ట్రింగ్ ఇవ్వండి").
ఇది అందంగా సాధారణ ఉంటే s మరియు s స్ట్రింగ్ కోసం ఒక మంచి పేరు తర్వాత t వస్తుంది ఎందుకంటే నేను దానిని పిలుస్తాను.
కాబట్టి GetString, మరియు ఇప్పుడు నేను తెలివి చెక్ చేయాలనుకుంటున్నారా మరియు నేను వెళుతున్నాను
(s == t) అప్పుడు నేను ("! మీరు \ n ఇదే టైప్") printf యూజర్ చెప్పడం వెళుతున్న ఉంటే;
ఇంకా నేను వంటి ("మీరు టైప్ చేసిన ఏదో వివిధ! \ n") ఏదో ముద్రించాలా వెళుతున్న
లేదా ఏ శిక్ష ఉంటుంది. కాబట్టి ఆ వంటివి.
తరువాత యధావిధిగా, నేను, ఆ ఏమీ చెడు జరిగింది తెలియజేయడం ఇది 0 తిరిగి ఉంటాం
మరియు నేను ముందుకు వెళ్లి ఈ కార్యక్రమం కంపైల్ మరియు అమలు వెళుతున్న.
>> కానీ సోమవారం మేము, ఈ కార్యక్రమాన్ని
మరియు వాస్తవానికి హలో హలో కాదు మరియు గుడ్బై గుడ్బై కాదు చెప్పారు.
మేము చూసిన ప్రవర్తన ఈ వంటి కొంచం పెద్దది.
నాకు, నా మూల డైరెక్టరీ లోకి వెళ్ళి ఇక్కడ జూమ్, మరియు యొక్క పోల్చి తయారు మనం లెట్.
సరే సంకలనం. పోల్చి నాకు అమలు అయ్యేలా అనుమతించండి. నాకు స్ట్రింగ్ ఇవ్వండి: HELLO.
నాకు మరొక స్ట్రింగ్ ఇవ్వండి: HELLO.
మీరు వేరొక టైప్!
Well, నాకు సులభమైన 50, 50 లో లాగ ప్రయత్నించండి తెలియజేయండి. మీరు వేరొక టైప్!
హాయ్, హాయ్. నుంచే, ఏదో ఇక్కడ జరుగుతోంది.
కానీ ఎందుకు వివరణ ఏమిటి?
స్పష్టంగా, లైన్ 12 పూర్తిగా పనిచేయడం లేదు.
ఇక్కడ ప్రాధమిక సమస్య ఏమిటి? అవును. >> [విద్యార్థి] ఇది చిరునామాలను పోల్చడం యొక్క.
అవును, సరిగ్గా. ఇది వాస్తవానికి చిరునామాలను పోల్చడం యొక్క
దీనిలో HELLO HELLO మరియు నిల్వ చేయబడతాయి.
ఇది మళ్లీ మళ్లీ HELLO అక్షరాలు పోల్చడం కాదు
ఏ రియల్లీ హాపెండ్ ఎందుకంటే, మనం GetString ఉపయోగించి చేసిన -
ఈ నల్లబల్ల, మళ్ళీ మా కంప్యూటర్ యొక్క మెమరీ
మరియు లెట్స్ నేను వేరియబుల్ s ప్రకటించి GetString కాల్ అని చెపుతారు.
నా మెమరీ అంటే ఎలా ఉంటుంది?
లెట్ యొక్క కక్ష్య s ఈ కనిపించే చెప్పారు. ఒక చదరపు ఉంది.
మరియు చాలా చక్కని ఏ సమయంలో నేను తెరపై మెమరీ యొక్క భాగాన్ని డ్రా చేసిన
ఇది 32 బిట్స్ అయితే నేను, పరికరంలోని ఎందుకంటే నిజానికి ఈ వంటి చతురస్రాలు గీయడం చేసిన
ఒక పాయింటర్, చిరునామా, 32 బిట్స్ ఉంది. ఇది ఒక పూర్ణాంకానికి అదే ఉంది.
కంప్యూటర్ సిస్టమ్ ఆధారంగా మారుతుంటాయి.
మీ Mac లేదా PC 64 బిట్స్ నిజాన్ని తో అస్పష్టంగా తెలిసిన మీరు యొక్క ఆ,
వాస్తవానికి, మీ కంప్యూటర్ 64-bit గమనికలు ఉపయోగించి అని సూచిస్తుంది
64-bit చిరునామాలు, మరియు ఆ యొక్క చేయబడనపుడు మధ్య మీ కంప్యూటర్ల ఉంది
ఒకప్పటి కంటే RAM కలిగి ఉంటాయి.
లాంగ్ కథ చిన్న, తిరిగి రోజు కంప్యూటర్లు మాత్రమే 32 బిట్స్ ఉపయోగించినప్పుడు
చిరునామాలు ప్రాతినిధ్యం, బైట్లు అతిపెద్ద సంఖ్య మీరు ప్రాతినిధ్యం వహిస్తుంది
ఆ సందర్భంలో గురించి మీరు 32 బిట్స్ ఉంటే?
2 32 4 బిలియన్ ఎందుకంటే, కుడి, బిలియన్ 4 కాబట్టి.
ఈ సంఖ్య కోర్సు పునరావృత చేయబడింది.
>> మీరు మాత్రమే 32 బిట్స్ కలిగి అయితే మీకు పరిగణించబడుతుంది అత్యధిక సంఖ్య సుమారు 4 బిలియన్.
కానీ కొన్ని సంవత్సరాల క్రితం వరకు కంప్యూటర్ల యొక్క ప్రాధమిక పరిమితి ఉంది
మీరు మాత్రమే 4 బిలియన్ వంటి అధిక పరిగణించబడుతుంది ఉంటే ఎందుకంటే,
మీరు RAM 8 గిగాబైట్ల లేదా RAM కూడా 5 గిగాబైట్ల కొనుగోలు ఉంటే అది పట్టింపు లేదు;
మీరు అధిక లెక్కింపు సాధ్యం కాదు, కాబట్టి ఇది పనిచేయదు.
మీరు మీ కంప్యూటర్ యొక్క మెమరీ మొదటి 3 లేదా 4 గిగాబైట్లు పొందలేక.
ఇప్పుడు సమస్య తక్కువ, మరియు మీరు మాక్బుక్ ప్రోస్ అండ్ Dells కొనుగోలు చేయవచ్చు
8 RAM యొక్క గిగాబైట్ల లేదా మరింత ఈ రోజుల్లో తో.
నేను ఈ కార్యక్రమం చాలా సులువుగా ఒక పాయింటర్ కేటాయించాలని అయితే, ఒక పాయింటర్, s అనే
నిజానికి మేము ఈ పొర తిరిగి రాలిపోవడం అవసరం ఎందుకంటే అది తెరపై ఇలా ఉండవచ్చు.
నేను చెప్పడం స్ట్రింగ్ ఉంచండి, కాని వంటి సోమవారం యొక్క స్ట్రింగ్ నిజంగా చార్ * ఉంది
కొన్ని పాత్ర యొక్క చిరునామా.
కాబట్టి మేము ఇప్పుడు కోసం GetString ఉపయోగించి చేస్తాము అయినప్పటికీ యొక్క ఆఫ్ ఆ శిక్షణ చక్రం తీసుకుందాం.
నేను s డిక్లేర్డ్ చేసిన, మరియు ఈ మెమరీ భాగం, 32 బిట్స్ ఉంది.
అప్రమేయంగా మెమరీలో ఇక్కడ ఏమిటి? >> [వినబడని విద్యార్థి ప్రతిస్పందన]
ఆ ఏమిటి? >> [విద్యార్థి] గార్బేజ్. >> గార్బేజ్. సరిగ్గా.
మీరు ప్రోగ్రామర్ ఒక వేరియబుల్ విలువను ఉంచారు లేకపోతే, దాని ఏమి తెలుసు?
కొన్నిసార్లు మీరు లక్కీ పొందండి మరియు 0 యొక్క, ఇది ఒక మంచి, క్లీన్ డిఫాల్ట్ విలువ రకం
సోమవారం చేసుకునేందుకు కానీ, కొన్నిసార్లు, పూర్తి అర్ధంలేని ఉంది
ఆ పేరు నుండి వచ్చింది చాలా పెద్ద అనుకూల లేదా ప్రతికూల సంఖ్య?
అవును. ముందు >> [విద్యార్థి] ఫంక్షన్. >> అవును.
>> తరచుగా గుర్తు ఎందుకంటే ముందు అని వచ్చింది అని ఫంక్షన్
మీరు మెమరీలో విధులు పిలుస్తారు, వారు, దిగువ నుండి మరింత స్థలాన్ని ఆక్రమిస్తాయి
మరియు వెంటనే తిరిగి వచ్చే చర్యలు వంటి, ఆ స్మృతి తిరిగి అవుతుంది
అని చెపుతాడు ఆ తర్వాత గై ద్వారా, వారు మెమరీ మీ అదే ముక్క ఉపయోగిస్తోంది.
మరియు మీరు అక్కడ ఎడమ చెత్త, మునుపటి విలువలు, ఉంటే
మేము అక్కడ ఏదైనా పెట్టలేదు తర్వాత కొన్ని విలువ కలిగి s పొరబడేటట్లు ఉండవచ్చు.
కాబట్టి ఈ సమయంలో మా RAM ఈ కనిపిస్తోంది.
ఇప్పుడు 7 యొక్క కుడి వైపు మేము, GetString కాల్ చేస్తున్నారు
ఇది మేము వారాలు చేస్తున్న చేసిన, కానీ నిజంగా చేయడం GetString ఉంది?
CS50 సిబ్బంది రాసిన GetString కొద్దిగా తెలివైన
ఆ వినియోగదారు టైప్ కీలు మరియు హిట్స్ నమోదు చేయండి మొదలవుతుంది వెంటనే
ఎన్ని కీస్ట్రోక్ యూజర్ హిట్ చేశాడు GetString గణాంకాలు అవ్ట్,
ఎన్ని అక్షరాలు నేను కోసం RAM కేటాయించాల్సిన అవసరం లేదు.
మరియు ఆ RAM నుండి వచ్చి ఎవరికి తెలుసు?
మీ కంప్యూటర్ యొక్క 2 గిగాబైట్ల లేదా మెమరీ whatnot ఎక్కడో ఉంది.
కానీ కంప్యూటర్ ఇక్కడే HELLO పదం స్థలాన్ని కనుగొన్నారు అనుకుందాం తెలియజేయండి.
నేను టైప్ పదం H-E-L-L-O ఉంది.
మరియు మేము అక్షరాలు యొక్క ఒక క్రమంలో ఈ డ్రా ఉంటే, మేము ఈ మాదిరిగా డ్రా ఉండవచ్చు.
కానీ నేను 1 అదనపు పనిని చేయడానికి అవసరం. ఏ సి ఏ తీగ చివర చెందిన?
మేము \ 0 గా వ్రాసి ఇది శూన్య పాత్ర.
ఇది సాంకేతికంగా సంఖ్య 0, కానీ బాక్ స్లాష్ అన్ని స్పష్టమైన చేస్తుంది
సాహిత్యపరంగా సంఖ్య 0, పూర్ణాంక 0 అని;
మీరు కీబోర్డ్ వద్ద టైప్ చేసే ఉదాహరణకు, కోట్-unquote 0 కోసం, కాదు.
కాబట్టి ఈ HELLO ఉంది.
>> మరియు మేము సోమవారం ఏమి చెప్పాలి అని GetString వంటి ఫంక్షన్
వాస్తవానికి ఈ వారాల తిరిగి?
ఆ నిజంగా అర్థం లేవు ఇది పర్ సే స్ట్రింగ్ తిరిగి కాదు
తీగలు లేని ఎందుకంటే. వారు CS50 లైబ్రరీలో ఒక కల్పన విధమైన ఉన్నారు.
సాంకేతికంగా ఏ, నిజంగా ఒక స్ట్రింగ్? >> [విద్యార్థి] ఇది మొదటి పాత్ర.
సరిగ్గా. ఇది వినియోగదారు సైన్ టైప్ చేసి చాలా సరళంగా మొదటి పాత్ర యొక్క చిరునామా యొక్క
అయితే బైట్ సంఖ్య 123 వద్ద మరియు తరువాత బైట్ సంఖ్య 124 వద్ద ముగుస్తుంది HELLO నా పదం,
125, 126, మొదలైనవి, మీద 0 నుంచి నేను సంఖ్య నా బైట్లు ఉంటే,
వాట్ రియల్లీ GetString తిరిగి అక్షరాలా సంఖ్య 123 ఉంది.
సో వాట్ s ఉంచే సంఖ్య 123, కాదు లేఖ H, కాని పదం, HELLO ఉంది
చాలా సరళంగా నేను HELLO మొదటి అక్షరం పొందవచ్చు చిరునామా.
కానీ తగినంత వంటి కనిపించడం లేదు. నేను, ఒక స్ట్రింగ్ కోసం ఒక పాత్ర మీరు అడిగారు.
కాబట్టి మేము ఎలా లేదా కంప్యూటర్ ఆ ELLO రకమైన H పాటు వచ్చిన తెలుసు?
మనం ఒప్పందం యొక్క విధమైన ఏమిటి? అవును.
[విద్యార్థి] ఇది కొన్ని ఎక్కువ అక్షరాలు కనుగొనేందుకు కూడా చెప్పడం ఉంచుతుంది. ఖచ్చితంగా >>.
>> మీరు తీగలను వ్యవహరించే చేయటం ఈ మానవ కంప్యూటర్ కన్వెన్షన్, ఉన్నాయి
లేకపోతే ఇప్పుడు చార్ నక్షత్రాలు అంటారు, మీరు కేవలం గుర్తించడానికి కలిగి
జీవితంలో ప్రతి స్ట్రింగ్ ముగింపు నిజంగా కేవలం, లూప్ ఒక దాన్ని పైగా iterating ద్వారా ఉన్న
ఒక సమయంలో లూప్, ఏ, తద్వారా మీరు స్ట్రింగ్ ముగింపు చూసినప్పుడు
ఇప్పుడు మీరు ఆ నుండి ప్రతిపాదించే చేయవచ్చు, OH, పూర్తి పదాన్ని HELLO ఉంది.
ముందు ప్రోగ్రామింగ్ అనుభవాన్ని మీకు ఆ జావా లో తెలిసిన
మీరు. కాల్ పొడవు మరియు ఇతర భాషలలో మీరు పొడవు లేదా ఇలాంటి కాల్ ఉండవచ్చును.
భాషలు చాలా లో, ముఖ్యంగా విషయాలు ఆబ్జెక్ట్ ఆధారిత భాషలు అని ఎందుకంటే ఆ, యొక్క
ఏదో యొక్క పొడవు, డేటా యొక్క భాగం యొక్క కప్పబడుతుంది లోపల రకం
చాలా మేము కప్పబడుతుంది ID లు మరియు పేర్లు మరియు సోమవారం ఒక విద్యార్థి యొక్క లోపల ఇళ్ళు వంటి.
కానీ సి చాలా తక్కువ స్థాయి ఉంది. మీరు ముందు ఆ పదాలు విని ఉంటే ఏ వస్తువులు లేదా తరగతులు ఉన్నాయి.
మీరు అన్ని నిజంగా మెమరీ చిరునామాలను ఉంది.
కాబట్టి ఈ ఆసక్తికరమైన డేటా నిర్మాణాలు ప్రాతినిధ్యం యొక్క పాత ఫ్యాషన్ మార్గం విధమైన ఉంది.
మీరు మొదటి పాత్ర యొక్క చిరునామా వంటి ప్రారంభ విలువ
ఆపై ప్రతి ఒక్కరూ అనుసరించండి ఒప్పుకున్న కొన్ని ఏకపక్ష కన్వెన్షన్.
కాబట్టి స్ట్రింగ్ పొడవు అమలు ఎలా, మేము ప్రపోజ్ చేయలేదు?
మీరు కొన్ని ఇప్పుడు కొన్ని సార్లు ఉపయోగించారు, ఇది Strlen, strlen. ఇది కుడి, అందంగా సులభం?
ఇది కోడ్ 2 లైన్లు వంటిది.
ఇది బహుశా ఒక అదనపు స్థానిక వేరియబుల్ తో, చాలా చక్కని విధమైన ఒక కోసం లూప్ ఉంది.
కానీ strlen కేవలం \ 0 వెతుకుతున్న ప్రారంభం తర్వాత ఒక పాయింటర్ తీసుకొని ఉంటుంది.
>> మరియు వెంటనే అది కనుగొంది, ఇది ఆ స్ట్రింగ్ లో తీసుకోబడింది దశలను మొత్తం తిరిగి రావచ్చు.
కాబట్టి రాబోయే వెళ్లి ఈ నుండి ప్రతిపాదించే చేయవచ్చు.
నేను లైన్ 10 లో చేసినట్లుగానే నేను t డిక్లేర్ అప్పుడు అనుకుందాం.
ఈ కొన్ని చెత్త విలువ. ఎవరు మొదటి వద్ద తెలుసు?
కానీ 10 యొక్క మార్గం యొక్క కుడి వైపు నేను మళ్ళీ GetString కాల్ చేస్తున్నాను.
ఈ ముగుస్తుంది ఎవరు తెలుసు?
లెట్ యొక్క కక్ష్య ఆపరేటింగ్ సిస్టమ్ ఇక్కడ అది పైగా దొరికింది చెబుతారు.
నేను, మళ్ళీ యాదృచ్ఛికంగా H-E-L-L-O టైప్ జరిగే
అందువలన మేము చిత్రాన్ని ఒక రకమైన డ్రా చేయవచ్చు.
కానీ నేను మళ్లీ గీసి ఈ చిత్రాన్ని చేసిన నిజానికి ఉద్దేశపూర్వక ఉంది
ఆ ఎందుకంటే ఈ ఒక కంటే HELLO వివిధ.
ఇక్కడ ఈ నగర 456 కావచ్చు, ఈ 457, మరియు మొదలైనవి.
ప్రశ్న గుర్తు ఒకప్పుడు పేరు సో వాట్ ఉంచే?
ఈ సందర్భంలో 456 లో.
మేము ఈ రోజు తర్వాత ఎందుకంటే నిజంగా ఏకపక్ష ఈ సంఖ్యలు ఎంచుకోవడం చేస్తున్నారు
మేము ఏదైనా యొక్క చిరునామా గురించి చాలా శ్రద్ధ వెళ్ళి లేదు.
మనం శ్రద్ధ అన్ని మేము HELLO వంటి డేటా యొక్క కొన్ని భాగం యొక్క చిరునామా గుర్తించడానికి ఉంది.
>> కాబట్టి నిజంగా మెమరీ చిరునామాలు గురించి మాట్లాడుతున్నప్పుడు చాలా మంది కంప్యూటర్ సైన్స్ లో ఏమి
మరియు, ప్రత్యేకించి గమనికలు గురించి మాట్లాడటం
ఈ విషయాన్ని వాస్తవానికి ఉన్న ఎవరు పట్టించుకుంటారు, - 123 ఇందుకు ఇబ్బంది కాకుండా
మేము దానిని కొన్ని సంఖ్యా చిరునామా వద్ద అని తెలుసు -
మేము ప్రపంచ సులభతరం మరియు కేవలం s పాత్ర కు సూచిస్తుంది చెబుతారు
మరియు t ఆ పాత్ర కు సూచిస్తుంది.
మరియు అది ఒక బాణం అని నిజానికి చాలా కావాలని ఉంది
సాహిత్యపరంగా ఇప్పుడు s H మరియు t వద్ద గురిపెట్టి ఎందుకంటే ఇతర H వద్ద సూచించబడిన
రోజు ముగింపులో, అది చిరునామా ఎందుకు, ఎందుకంటే
కానీ మేము కోడ్ యొక్క కొన్ని ముక్క ఆ చిరునామా వ్యక్తం సామర్థ్యం అవసరం.
మమ్మల్ని ఇంకా ఈ చిరునామాలను అవకతవకలు లేదు
కాబట్టి మేము, మేము ఆశ్చర్యంకలిగించునట్లు చేయు మరియు గమనికలు తో పనులు యొక్క క్రమం ఇక్కడ చూస్తారు
కానీ అక్షరాలా 12 ఇప్పుడు లైన్ లో ఏమి విలువలు మేము పోల్చడం ఉంటాయి
లైన్ 12 లో ఈ కథ ప్రకారం?
మేము 456 కు 123 సమాన సమానం చెబుతున్న దాన్ని? మరియు ఆ ఖచ్చితంగా కేసు కాదు.
మరియు విషయపరంగా, ఈ పాయింటర్ ఖచ్చితంగా ఈ అదే కాదు
, మీరు రెండుసార్లు GetString అని, మరియు GetString తెలివైన సూపర్ గా ప్రయత్నించండి లేదు ఎందుకంటే
ఇది గుర్తించడం ప్రయత్నించండి లేదు, OH, మీరు 5 నిమిషాల క్రితం HELLO టైప్;
నేను ముందు మీరు ఇచ్చిన నన్ను మీరు అదే పాయింటర్ కల్పించడానికి అనుమతిస్తాయి,
ఇది మెమరీ కొత్త భాగం మీరు కాల్ ప్రతిసారీ కేటాయించుకునే.
>> మేము ఈ సమస్య కాబట్టి ఎలా పరిష్కరించాలి?
ఉన్నత స్థాయి ఉంటే నేను తీగలు HELLO HELLO మరియు పోల్చడానికి ఎంచుకోండి -
నేను గమనికలు గురించి పట్టించుకోను - నేను ప్రశ్నకు సమాధానం గురించి ఎలా ఏం చేస్తావు,
వినియోగదారు ఒకే విషయం టైప్ చేశారా? ఇక్కడికి అవసరం? అవును.
[విద్యార్థి] ఒక చర్య ఉపయోగించండి. >> నేను పెట్టె యొక్క ఒక చర్యను పరిష్కరించటానికి ఉపయోగించవచ్చు.
నేను, strcmp, s-t-r-c-m-p అనే క్రియాశీలతను ఉపయోగించగలదు
స్ట్రింగ్ పోల్చి చెప్పడం కేవలం సంక్షిప్త రూపం.
మరియు మేము వెళ్లి ఉంటే, ఉదాహరణకు, నేటి handouts మధ్య ఇది ​​2 పోల్చి
నేను ఖచ్చితంగా అలా.
నేను, 26 లేదా క్రిందికి న అన్నిటికీ పంక్తి 1 నుండి అదే ఉంచిన
మరియు ఇప్పుడు ఈ భాగం కేవలం కొద్దిగా మార్చబడింది గమనిస్తారు.
యొక్క ఒక క్షణం లైన్ 28 విస్మరించండి మరియు ఈ ఒక మాత్రమే దృష్టి లెట్.
మేము STR సరిపోల్చుతుంది ఆ సోమవారం ఏమి చేశారు?
ఇది, ఈ విషయంలో 2 గమనికలు, s మరియు t తీసుకునే విధానాన్ని నిర్వహిస్తుంది
క్రమీకరించు వాస్తవంగా, ఆ 2 అక్షరాలు దాని వేలు పెట్టటం
మరియు అది చేయాలి, లూప్ కొంత లూప్ లేదా ఒక వంటిది
మరియు ఈ అదే ఉన్నాయో? అలా అయితే, దీనిని వేళ్లు లేదా ముందుకు గమనికలు తరలిస్తుంది.
ఈ ఒకటే, ఈ అదే, ఈ అదే,
ఈ అదే, ఈ అదే? మరియు ooh, నేను s మరియు t రెండు వద్ద స్ట్రింగ్ చివరిలో ఉన్నాను.
నేను ఏ వైరుధ్యాలు కనుగొనలేకపోయాము. అవును, ఈ తీగలు ఒకే విధంగా ఉంటాయి.
2 రెమ్మలు అదే ఉంటే మరియు STR, స్పష్టంగా తిరిగి ఏ సరిపోల్చుతుంది? జీరో.
కాబట్టి 0 ఈ విషయంలో మంచి ఎందుకంటే అది -1 లేదా +1, తిరిగి ఉంటే
ఆ s కేవలం t అక్షర ముందు లేదా t తర్వాత వచ్చిన జరిగినప్పుడు అర్థం.
ఎందుకు ఆ స్ట్రింగ్ ముందు వచ్చి మీరు చెబుతుంది ఒక చర్యను కలిగి ఉపయోగకరంగా ఉంటుంది
లేదా ఒక నిఘంటువులో తర్వాత?
[విద్యార్థి] శోధిస్తోంది. >> శోధిస్తోంది మరియు క్రమబద్ధీకరించేందుకు.
>> కాబట్టి మీరు బైనరీ శోధన లేదా బబుల్ సార్ట్ వంటి విషయాలను లేదా విధమైన విలీనం చెయ్యగలరు
మీరు విషయాలను పోల్చి ఉంటుంది.
ఇంతవరకు మేము కొన్ని మూలల్లో కట్ రకమైన మీరు మరియు మాత్రమే క్రమబద్ధీకరించేందుకు గురించి మాట్లాడారు
సంఖ్యల సందర్భంలో దాని గురించి మాట్లాడటానికి nice మరియు సులభం, ఎందుకంటే
కానీ మీరు ఖచ్చితంగా తీగలు, ఆపిల్ మరియు అరటి, సరిపోల్చవచ్చు
ఆపిల్ అదేవిధంగా, అరటి ముందు ఉన్నట్లు తెలిస్తే, ఎందుకంటే
మీరు వీడియో లో విలీనం విధమైన ద్వారా కూడా రాబ్ వంటి మెమరీలో చుట్టూ తీగలను తరలించవచ్చు
మరియు మేము ఎంపిక విధమైన, చొప్పించడం విధమైన, మరియు బబుల్ సార్ట్ వేదికపై ఇక్కడ చేశాడు.
కాబట్టి పేరు ఇంకా మేము ఈ పడుతుంది? యొక్క ఈ ప్రయత్నించండి లెట్.
యొక్క లెట్స్ విధమైన క్షణం ఆ పాఠం మర్చిపోతే మరియు ఇప్పుడు ప్రయత్నించండి మరియు ఈ క్రిందివి చేయడానికి 1.c కాపీ.
లైన్ 21 లో నేను, ముద్రణ ఏదో చెప్పడం నేను
అప్పుడు నేను, వినియోగదారు నుండి ఒక స్ట్రింగ్ పొందుతున్నాను
అప్పుడు నేను ఈ తనిఖీ చేస్తున్నాను.
మమ్మల్ని ఇంకా ఈ అలవాటు లో సంపాదించిన, కానీ యొక్క ఇప్పుడు మనం లేదు.
ఈ పొర చర్మము వాస్తవానికి యొక్క లెట్. ఇది నిజంగా చార్ * ఉంది. ఈ వ్యక్తి నిజంగా చార్ * ఉంది.
కనుక ఇది s == NULL ఉంటే తనిఖీ చేయడానికి అర్థం ఏమిటి?
ఇది అవుతుంది మీరు GetString వంటి ఫంక్షన్ కాల్ చేసినప్పుడు
లేదా సాధారణంగా కేవలం, మీరు కొన్ని మెమరీ ఇవ్వాలని ఒక కంప్యూటర్ అడగండి
ఏదో తప్పు వెళ్ళటానికి.
నీకేమైనా పిచ్చా మరియు మెమరీ టెరాబైట్ కోసం కంప్యూటర్ అడగండి కాలేదు
కేవలం కంప్యూటర్ లో లేని మెమరీ బైట్లు ట్రిలియన్ల కోసం అడిగారు,
కానీ GetString మరియు ఇతర చర్యలు మీరు వద్ద పదాన్ని కొన్ని మార్గం అవసరం
మీరు చాలా అడిగారు ఉంటే.
మీరు అధిక మెమరీ అడిగారు ఉంటే GetString చేస్తుంది మార్గం
ఆ సూపర్, సూపర్ తక్కువ సంభావ్యత అయినా, కంప్యూటర్ అందుబాటులో ఉంది కంటే
మాకు ఎవరూ, Enter ని అప్పుడు ట్రిలియన్ అక్షరాలను టైప్ మరియు వెళ్ళే ఎందుకంటే
కానీ ఉండవచ్చు అయితే తక్కువ సంభావ్యత, నేను ఇప్పటికీ, కేవలం సందర్భంలో అది తనిఖీ మీరు
మరియు ప్రత్యేక విలువ GetString, సమాధానం, మరియు ఇతర విధులు తిరిగి ఆ
ఏదో సమస్య ఉంది ఉంటే అన్ని CAPS లో NULL.
>> మరియు NULL ఏమిటి? NULL కేవలం ఒక పాయింటర్ ప్రాతినిధ్యం జరుగుతుంది. ఇది మెమరీ చిరునామా 0 ఉంది.
ఈ నా కంప్యూటర్ యొక్క మెమరీ ఉంటే వరల్డ్, ఆ కక్ష్య నిర్ణయించుకుంది - మీకు తెలిసిన వాటిని? -
మేము ప్రతి కంప్యూటర్ యొక్క మెమరీ కేవలం 1 బైట్ దొంగతనం చూడాలని, మరియు ఈ నగర 0.
మేము NULL యొక్క మారుపేరు ఇవ్వడం వెళుతున్న మరియు మేము హామీ చూడాలని
మేము నిజంగా అక్కడ నిజమైన డేటా ఎన్నడూ ఆ
మేము కేవలం ఏకపక్ష ప్రత్యేక విలువ, 0, aka NULL, అవసరం ఎందుకంటే
ఏదో తప్పు జరిగితే మేము వినియోగదారులు అరుస్తుంటారు చేయవచ్చు.
లేకపోతే మీరు 0 ఇక్కడ ఏదో ఉంచండి అర్థం లేదు తెలియదు ఉండవచ్చు
లేదా ఏదో తప్పు జరిగింది శతకము
మేము ఆ NULL అంటే ఏమీ తిరిగి అంగీకరిస్తున్నారు ఉంటుంది
సరైన చిరునామా రాలేదు.
ఇప్పుడు, ఇక్కడ నేను నా మానవ కన్వెన్షన్ స్వీకరించేందుకు నేను ప్రధాన నుండి 1 తిరిగి
ఏదో తప్పు పోతే.
ప్రధాన తిరిగి సమావేశం 0 మంచి ఉంటే తిరిగి ఎందుకంటే ఆ, యొక్క
1 లేదా కొన్ని ఇతర విలువ చెడ్డ ఉంటే.
కానీ GetString మరియు NULL మెమరీ రిటర్న్స్ ఒప్పందాలు ఏదో చెడు పోతే ఏ ఫంక్షన్.
>> సరే. కాబట్టి దురదృష్టవశాత్తు, లైన్ 27, అది అయినప్పటికీ సూపర్ సాధారణ, పూర్తిగా స్ట్రింగ్ కాపీ విఫలమైంది.
ఎందుకు? మేము ఈ క్రింది చూడవచ్చు.
నేను s యొక్క ఒక నకలు మరియు దానిని కాల్ చేయడానికి లైన్ 27 దావా చేస్తున్నాను.
నేను 2 రెమ్మలు ఈ సారి యూజర్ అడగడం లేదు; నేను s లో విలువను చెప్పడం నేను
అలాగే T లో ముంచాలి.
కాబట్టి ఇప్పుడు కేవలం 29 తరువాత నేను ఏమి చేస్తున్నాను లైన్ లో, ఈ ఎలా బ్రోకెన్ ప్రదర్శించేందుకు?
T యొక్క పొడవు 0 కన్నా ఎక్కువ ఉంటే మొదటి నేను తనిఖీ చేస్తున్నాను.
అక్కడ కొన్ని స్ట్రింగ్ ఉంది. యూజర్ సైన్ ఏదో టైప్
స్పష్టంగా లైన్ చేస్తున్న 32, ఏమిటి?
[వినబడని విద్యార్థి ప్రతిస్పందన] >> కుడి. మీరు రకమైన నేను చేయుచున్నాడు మాట్లాడుతూ నుండి ప్రతిపాదించే చేయవచ్చు.
కానీ సాంకేతికంగా, ఈ ఏమి ఉంది? t [0] ఏ సూచిస్తుంది?
[విద్యార్థి] జేరోయేత్ పాత్ర. >> [మలన్] జేరోయేత్ పాత్ర.
లేదా, మరింత మానవ వంటి, T లో మొదటి అక్షరం, ఆ ఏమైనా H బహుశా ఈ విషయంలో.
మరియు toupper అది దేనిని. దానిని యొక్క జేరోయేత్ పాత్ర క్యాపిటల్ అక్షరాలలో మరియు మార్చుకుంటారు.
ఈ t యొక్క జేరోయేత్ పాత్ర తీసుకుంటాయి కాబట్టి, అది పెద్ద తయారు
మరియు అదే స్థానంలో తిరిగి ఉంచండి.
నేను చిన్న లో హలో టైప్ చేస్తే, ఈ ఒక రాజధాని H. కు చిన్న h మార్చాలి
కానీ సమస్య లైన్స్ లో 35 మరియు నేను గురించి నేను ఏమి 36 మాకు s మరియు t కోసం ప్రింట్ ఉంటుంది.
మరియు మీ hunch ఏది?
నిజానికి నేను చిన్న లో హలో లో టైప్ చూడండి ఏమి వెళ్తున్నాను?
ఏ ముద్రించిన పెట్టడానికి జరగబోతోంది? >> [వినబడని విద్యార్థి ప్రతిస్పందన] >> ఆ ఏమిటి?
[విద్యార్థి] బిగ్ H మరియు మిగిలిన చిన్న. చిన్న >> పెద్ద H మరియు మిగిలిన ఇది కోసం, s లేదా t?
[విద్యార్థి] రెండూ. >> రెండూ. సరిగ్గా. ఇక్కడ ఏమి చూద్దాం.
>> నాకు ముందుకు వెళ్లి ఈ సంకలనం లెట్. ఈ copy1, కాబట్టి copy1 చేయండి. అన్ని కుడి.
చిన్న లో హలో: నాకు ముందుకు వెళ్లి copy1 అమలు, Enter, ఏదైనా చెప్పండి లెట్ సైన్ జూమ్ చెయ్యండి.
, కాపీ క్యాపిటల్, కానీ ఇది స్పష్టంగా అదే అసలు క్యాపిటల్
ఇప్పుడు ఈ కథ జరుగుతుంది ఎందుకంటే?
లైన్ 27 లో నేను నిజానికి, స్ట్రింగ్ కాపీ చేయబడుతుంది కనిపించడం లేదు
కానీ మీరు intuitively కేసు అని భావించాడు ఉండవచ్చు అయినప్పటికీ,
మీరు ఈ చిత్రాన్ని గురించి అనుకుంటే, ఏ నిజంగా నేను చేసిన?
చిత్రం సగం ఉంటుంది.
ఇంకా కథ లేదు కాబట్టి కాబట్టి యొక్క తిరిగి సమయంలో రోల్ తెలియజేయండి.
S కథ ఉన్నాయి, కానీ లెట్స్ హలో ఈ సమయంలో చిన్న.
నేను నిజానికి సైన్ టైప్ ఏమి నాకు పరిష్కరించడానికి అనుమతిస్తాయి
ఇక్కడ ఈ సందర్భంలో మనం h-e-l-l-o ఉన్నాయి.
మేము అక్షరాలు క్రమం గా డ్రా చేస్తాము, ఇక్కడ నా వేరుచేసే పంక్తులు ఉంచండి మరియు నా \ 0.
కాబట్టి ఈ మేము 24-ish ద్వారా వెంటనే లైన్ 1 గా ఉంది ఇక్కడ ఇవ్వడం లేదా తీసుకుని, అమలు చేశాయి.
ఈ నా మెమరీ చిత్రం.
నేను లైన్ 27 పొందినప్పుడు, ఏమి జరుగుతుంది?
ముందు వలె, నేను ఈ చదరపు వంటి డ్రా మేము ఒక పాయింటర్ పొందండి.
దానిని అని. మరియు సిద్ధంగా దాని విలువ ఏమిటి? ఎవరు తెలుసు? కొన్ని చెత్త విలువ.
>> కాబట్టి దూరంగా ఒక ప్రశ్న గుర్తు వంటి వియుక్త చేస్తాము.
మరియు వెంటనే లైన్ 27 కుడి వైపు అమలు వంటి, నేను t లోపలి ఉంచడం వున్నాను?
s ఉందని ఇదే.
ఒక క్షణం మేము బాణం ఈ ఊహ తొలగించి మేము చెప్పిన అయితే
OH, ఈ మీరు t లు, సెమికోలన్ గెట్స్ చెప్పినప్పుడు మెమరీ లోడ్ చిరునామా 123 ఉంది,
మీరు వాచ్యంగా ఇక్కడ 123 ఉంచడం చేస్తున్నారు.
మేము రకమైన చిత్రాలు మళ్ళీ మన ప్రపంచం సులభతరం ఇప్పుడు ఉంటే,
మీరు నిజంగా చేశాను మీ ప్రపంచానికి మరొక బాణం చేర్చబడింది
ఆ t అదే ఖచ్చితమైన స్ట్రింగ్ సూచించే యొక్క.
కాబట్టి లైన్ 31 మరియు 32 లో నేను నిజంగా t [0] మార్చడం గురించి అనుకుంటే,
t ఏమిటి [0] ఇప్పుడు తో స్పష్టంగా పర్యాయపదంగా? s [0]
కాబట్టి అన్ని జరుగుతున్నది ఆ.
మరియు ఈ విధమైన అయితే అనిపిస్తుంది కొద్దిగా తక్కువ స్థాయిలో మరియు రహస్య
మరియు ఈ విధమైన బహుశా intuitively ఇది పని వుండాలి అనుకుని -
నేను ముందు విషయాలను కాపీలు చేసిన అది పని -
మీరు నిజంగా స్ట్రింగ్ నిజంగా ఏమి గురించి అనుకుంటే, అది ఒక చార్ * ఉంది.
అయితే, అది ఏమిటి? ఇది కొన్ని పాత్ర యొక్క చిరునామా ఉంది.
అప్పుడు బహుశా అది మరింత అర్థవంతంగా ఉంటుంది మీరు ఏదో ఒకటి చేయడానికి ప్రయత్నించినప్పుడు
ఈ వంటి సూపర్ మామూలు, మీరు చేయుచున్నారు అన్ని కాపీ ఒక మెమరీ చిరునామా ఉంది.
మీరు నిజంగా స్ట్రింగ్ తో ఏదైనా చేయడం లేదు.
మీరు సంఖ్య ఆలోచన ఉంది కూడా చేస్తే మీరు, కోడ్ ఈ సమస్యను పరిష్కరించడానికి ఎలా
ఉన్నత స్థాయి, విషయపరంగా, మేము స్పష్టంగా, s యొక్క నిజమైన కాపీ TA చేయడానికి ఏమి చేయాలి?
అవును. >> [విద్యార్థి] అది ఒక న్యూ నగర ఇవ్వండి? ఖచ్చితంగా >>.
>> మేము T ఒక బ్రాండ్ కొత్త ప్రదేశము అవసరం.
మేము, ఏదో మేము మెమరీ కొత్త భాగం పొందండి దీనిలో ప్రపంచ సృష్టించాలి
కేవలం స్పష్టత కోసమని నేను ఈ క్రింద ఒక డ్రా చేస్తాము, కానీ అది అక్కడ అది అవసరం లేదు.
కానీ అదే పరిమాణం ఉండాలి, నేను అదే స్థానంలో నిలువు వరుసలతో డ్రా చేస్తాము.
ఈ ప్రారంభంలో అన్ని చెత్త ఉంటే ఇది మంచిది. ఎవరు ఉంది ఏమి తెలుసు?
నేను అవసరం కానీ స్టెప్ 1 మెమరీని వంటి నాకు ఇవ్వండి ఉంటుంది అన్నారు
హలో కాపీని సరిపోయే, అప్పుడు, ఇక్కడ h కాపీ ఎలా ఇక్కడ ఇ గుర్తించడానికి
ఇక్కడ మొదలైనవి l.
వివరాలు కొన్ని ఇప్పటికీ వియుక్త కూడా అయితే ఈ అప్పటికే కొద్దిగా స్పష్టమైన భావించరు.
ఈ ఈ స్ట్రింగ్ కృతిని కాపీ చేసుకోవచ్చు, ఇది కేవలం లూప్ లేదా కొంత లూప్ యొక్క
లేదా మీరు అన్ని ఉండే విధముగా చేసిన తో ఏదో.
కాబట్టి యొక్క ఈ ప్రయత్నించండి తెలియజేయండి. నాకు copy2.c లోకి వెళ్ళి తెలపండి.
Copy2.c లో మేము లైన్ 27 మినహా దాదాపు అదే ప్రోగ్రామ్ను.
ఇది కాస్త క్లిష్టమైన ఉంది, కానీ మేము ముక్కగా అది విచ్ఛిన్నం ఉంటే
ఎడమ చేతి వైపు ఉంటుంది.
చార్ * t ఒక ప్రశ్న గుర్తు ఉన్నప్పటికీ, మెమరీ లో ఈ విషయం సృష్టిస్తుంది
మేము సంఖ్య ఆలోచన ఉంది ఎందుకంటే సిద్ధంగా ఉన్నాయి ఏమిటి.
కుడి వైపు మేము ఇప్పుడు, ఒక కొత్త ఫంక్షన్ malloc పరిచయం చేస్తున్నారు
మెమరీని కేటాయించాల్సిన కోసం, నాకు మెమరీ ఇవ్వాలని
మరియు ఇది స్పష్టంగా పట్టే అనేక వాదనలు, ఎన్ని కుండలీకరణాలు లోపల విషయాలు?
నేను 1 మరియు 2 యొక్క murmurings విన్నాను, కాని అది కేవలం 1.
కుండలీకరణాలు లోపల కేవలం 1 విషయము అంటే ఏ కామా, ఉన్నాయి.
ఇతర కుండలీకరణాలు ఉంది ఉన్నప్పటికీ, నాకు హైలైట్ తెలియజేయండి
అన్నింటి కుండలీకరణాలు యొక్క లోపల ఏముంది, మరియు ఈ వ్యక్తీకరణ ఉంది:
(Strlen (s) + 1) * sizeof (చార్).
మేము నిజంగా ద్వారా ఈ అనుకుంటే కాబట్టి, ఈ నాకు s యొక్క పొడవు ఇవ్వాలని చెబుతున్నారు.
నేను పొడవు లో 1 జోడించడం, అయితే, వున్నాను? >> [వినబడని విద్యార్థి ప్రతిస్పందన]
సరిగ్గా. మేము తోక వద్ద ఈ గై స్థలాన్ని, ఆంగ్ల అర్థం కలిగి ఆరవ పాత్ర అవసరం
కానీ ప్రత్యేక ప్రోగ్రాముల అర్థం కాదు.
>> కాబట్టి మేము ఆ కోసం ఒక + 1 అవసరం ఎందుకంటే strlen తిరిగి పొడవు యొక్క మానవ నిరీక్షణ,
హలో లేదా 5, మీరు అదనపు శూన్య పాత్ర ఉండదు.
నేను మానవీయంగా + 1 తో ఈ జోడించండి.
మరియు ఈ యొక్క * పరిమాణం (చార్), మేము ఈ ముందు చూడలేదు.
ఈ సాంకేతికంగా ఒక క్రియ కాదు.
ఇది కేవలం ఏ పరిమాణం ఒక కంప్యూటర్లో కొన్ని డేటా రకం మీరు చెబుతుంది ఒక ప్రత్యేక కీవర్డ్ యొక్క
వాస్తవానికి ఎందుకంటే, మాకు కొన్ని 32-bit కంప్యూటర్లు ఉన్నాయి.
నేను ఇంట్లో ఒక అందమైన పాత కంప్యూటర్ కలిగి, మరియు అది మాత్రమే గమనికలు ప్రాతినిధ్యం వహించేందుకు 32 బిట్లను ఉపయోగిస్తుంది.
నేను ఒక డేటా రకాన్ని యొక్క పరిమాణం చేయకుంటే, కనుక 32 బిట్స్ కావచ్చు.
నా కొత్త ఫ్యాన్సీ కంప్యూటర్ ఉపయోగించి నేను, నేను 64 బిట్స్ విలువ తిరిగి ఉండవచ్చు
ఒక చిరునామా వంటి వాటి కోసం.
కాబట్టి ఈ విషయంలో కేవలం సూపర్ సురక్షితంగా ఉంచడానికి, మేము వంటి గట్టి కోడ్ ఏదో వెళ్ళడం లేదు -
అలాగే, మేము ఇప్పటివరకు చెప్పారు చేసిన వాటిని ప్రకారం ఒక చార్ యొక్క పరిమాణం ఏమిటి?
మేము చాలా ఎక్కువగా 1 బైట్, మరియు ఆ అన్ని కోణాల్లో చాలా చక్కని నిజమని మాటలతో చెప్పారు చేసాము.
కానీ మళ్ళీ, అంచనాలు చెడు ఉంటాయి.
ప్రజలు మీరు భావించలేదు విధాలుగా మీ సాఫ్ట్వేర్ను ఉపయోగించడానికి వారు బగ్గీ సాఫ్ట్వేర్ దారి.
కాబట్టి లెట్స్ వియుక్త ఈ దూరంగా మరియు కేవలం మరింత సామాన్యముగా సే
నేను మెమరీ ఈ అనేక భాగాలు అవసరం
మరియు మెమరీ ప్రతి భాగం, ఒక పాత్ర యొక్క పరిమాణం సమానంగా ఉండాలి
ఈ సందర్భంలో 1 సమానంగా నిజానికి ఇది, కానీ అది వ్రాసే మరింత సాధారణ మార్గం.
పదం హలో ఉంటే కాబట్టి, ఎన్ని బైట్లు malloc స్పష్టంగా హలో కోసం కేటాయించే లేదు?
[విద్యార్థి] సిక్స్. >> ఆరు. మేము తెరపై ప్రశ్నార్థకాలుగా కలిగి ఖచ్చితంగా అనేక.
మరియు తర్వాత ఒక ఇప్పుడు GetString యొక్క అర్థం ఆధారంగా అంచనా పడుతుంది
malloc బహుశా ఏ తిరిగి లేదు? >> [విద్యార్థి] ఒక చిరునామా.
ఏ యొక్క చిరునామాను? మెమరీ మొదటి భాగం యొక్క.
>> మేము ఏమి అక్కడ సంఖ్య ఆలోచన ఉంది ఎందుకంటే కొన్ని ఇతర చర్య
గతంలో ఈ మెమరీ ఉపయోగించడం కావచ్చు.
కానీ malloc, GetString వంటి మెమరీ మొదటి బైట్ యొక్క చిరునామా తిరిగి
మీరు ప్రక్కన పెట్టినవి అని.
అయితే, ఏ దీనిని లేదు బాక్ స్లాష్ శూన్య పాత్ర ఈ ఖాళీ పూర్తి ఉంది
ints, తీగలు, శ్రేణులను: మీరు ఏదైనా కేటాయించే malloc ఉపయోగించవచ్చు అది మారుతుంది ఎందుకంటే
తేలుతుంది, విద్యార్థి నిర్మాణాలు.
మీరు పూర్తిగా సామాన్యముగా malloc ఉపయోగించవచ్చు.
ఇది శ్రద్ధ లేదా మీరు మెమరీ పెడుతోంది ఏమి తెలుసుకోవాలి లేదు.
కాబట్టి దీనిని \ 0 ఉంచాలి malloc కోసం presumptuous ఉంటుంది
మెమరీ ప్రతి భాగం యొక్క ముగింపులో మీరు ఇచ్చే యొక్క
ఈ \ 0 విషయం కేవలం తీగల యొక్క కన్వెన్షన్ ఎందుకంటే.
ఇది ints ఉపయోగిస్తారు కాదు, అది తేలియాడుతున్న ఉపయోగిస్తారు కాదు, అది విద్యార్ధులు ఉపయోగిస్తారు కాదు.
కాబట్టి malloc తో gotcha భారం మీరు పూర్తిగా ప్రోగ్రామర్ ఉంటుంది
మీరు కేటాయించింది ఎన్ని బైట్లు గుర్తుంచుకోవడానికి మరియు ఎప్పుడూ లూప్ ఒక ఉపయోగించకూడదని
లేదా కొంత లూప్ మరియు మీరు ఇచ్చిన చేసిన మెమరీ భాగం యొక్క సరిహద్దు గత వెళ్ళండి.
వెంటనే మీకు మెమరీని కేటాయించాల్సిన వంటి, మరొక విధంగా ఉంచండి
మీరు ఆపరేటింగ్ సిస్టమ్ అడగవు, OH, ద్వారా, ఈ ఎలా మెమరీ భాగం యొక్క పెద్ద ఉంది?
మీరు ఆ విలువ అవసరం ఉంటే గుర్తు వరకు మీరు పూర్తిగా ఉంది.
>> నేను ఈ మెమరీ ఉపయోగించడానికి ముందుకు ఎలా చూడటానికి.
లైన్ 28 మరియు 29 లో నేను ఇలా చేస్తున్నాను?
జస్ట్ మొత్తం తెలివి చెక్.
ఏదో తప్పు జరిగింది ఒకవేళ, నేను మెమరీ కొన్ని క్రేజీ మొత్తం ఎంటర్టైన్
లేదా నేను అనేక మైన, కేవలం తగినంత మెమరీ సామర్థ్యం ఉండదు ఆ కంప్యూటర్లో అమలు
అలాంటిదే, నేను కనీసం శూన్య తనిఖీ మీరు.
వాస్తవంలో, అనేక మంది కంప్యూటర్లు మీరు భ్రమ ఇస్తుంది ప్రతి కార్యక్రమం
మీ RAM మొత్తం ఉపయోగించవచ్చు,
కానీ చాలా, బహుశా కొన్ని క్రేజీ దీర్ఘ స్ట్రింగ్ లో యూజర్ రకాల ఉంటే వారు ఒక చెడ్డ నువ్వే ఎందుకంటే
మరియు వారు నిజానికి, అది మీ ప్రోగ్రామ్ లేదా హాక్ క్రాష్ ప్రయత్నిస్తున్న
మీరు కనీసం malloc తిరిగి విలువ తనిఖీ మీరు మరియు అది శూన్య సమానం అని.
మరియు అది ఉంటే, నేను ఆ సందర్భంలో ఏమి తెలియదు ఎందుకంటే యొక్క ప్రస్తుతం విడిచి తెలియజేయండి.
నేను స్ట్రింగ్ కాపీ చెయ్యాలి? దీన్ని కొన్ని మార్గాలు ఉన్నాయి.
అక్కడ STR సి లో విధులు కాపీ, కానీ మాకు ఈ పాత ఫ్యాషన్ విధంగా చేయడానికి ఇది సులభమైన సూపర్ ఉంది.
>> మొదటి నాకు s యొక్క పొడవు ఏ గుర్తించడానికి అనుమతిస్తాయి.
నేను లూప్ లో ఈ చేసి ఉండవచ్చు కానీ బదులుగా నేను స్పష్టత కోసం ఇక్కడ ఉంచారు.
కాబట్టి n ఇప్పుడు స్పష్టంగా 5 ఇది అసలు స్ట్రింగ్ యొక్క పొడవు, నిల్వ చేస్తుంది.
నా కోసం లూప్ లో నేను, n వరకు న 0 నుండి iterating నేను
మరియు ప్రతి పునరావృతం న నేను చూస్తూ నేను s [i] t లోపలి [i].
అక్కడ నేను ముందు తీగలను వద్ద గురిపెట్టి నా 2 వేళ్ళతో సూచించినట్లు ఏమిటి.
లూప్ ఈ ఈ వంటి iterates, నేను, ఇక్కడ లోకి h కాపీ చేయబడుతుంది వెళుతున్న
ఇక్కడ, l ఇక్కడ లోకి లోకి ఇ ఈ లు ఎందుకంటే, ఈ t ఉంది.
మరియు తర్వాత చివరగా, లైన్ 35 లో నేను ఇలా చేస్తున్నాను?
నేను స్ట్రింగ్ t ముగింపు కాబట్టి నిర్ధారించుకోవాలనుకుంటున్నాము.
నేను స్పష్టమైన సూపర్ అని దానిని ఈ విధంగా చేసాడు.
కానీ, మీరు చేయగలిగితే,, ఇలా వేరే మార్గం ఎవరైనా ప్రతిపాదిస్తున్నాయి.
నేను నిజంగా లైన్ 35 లేదు. దీన్ని మరొక విధంగా ఉన్నాయి.
అవును. >> [వినబడని విద్యార్థి ప్రతిస్పందన] >> అది బిగ్గరగా సే.
[విద్యార్థి] కన్నా తక్కువ లేదా సమానం. ఖచ్చితంగా >>.
మేము కంటే తక్కువ లేదా సాధారణంగా చెడు ఉంది n, సమానంగా చెప్పగల్గినవి
మేము లెక్కింపు చేస్తున్న విషయం కూడా సమాన వరకు వెళ్ళి దాదాపు ఎల్లప్పుడూ ఉన్నప్పుడు ఎందుకంటే
మేము చాలా దూరం 1 దశల వెళ్ళండి.
కానీ గుర్తుంచుకోండి, మేము ఎన్ని బైట్లు కేటాయించాలని చేశారు?
మేము 6 మొత్తం, కాబట్టి 5 + 1 S యొక్క strlen కేటాయించింది.
కాబట్టి ఈ విషయంలో మేము ఈ వంటి ఏదో ఒకటి కాలేదు
మేము చాలా చివరిలో కేవలం హలో కూడా \ 0 లేదు కాపీ చేసిన కాబట్టి.
ప్రత్యామ్నాయంగా, మేము, strcpy, STR కాపీ అని ఒక ఫంక్షన్ ఉపయోగించవచ్చు
కానీ దాదాపు చాలా సరదాగా కాదు.
కాని ఇది హుడ్ కింద చేస్తుంది అంతే.
అప్పుడు చివరగా, మేము ముందు గా ఇదే.
నేను t పెట్టుబడి మరియు అప్పుడు నేను అసలు ఈ మరియు కాపీ అనిపిస్తుంది కనిపిస్తోంది పేర్కొన్నారు.
కాబట్టి యొక్క ఇప్పుడు ఈ ప్రయత్నించండి తెలియజేయండి. నాకు ఇక్కడ వెళ్ళి తెలపండి. Copy2 చేయండి. మేము లో జూమ్ మరియు copy2 అమలు చేస్తాము.
నేను చిన్న లో హలో టైప్ వెళుతున్న, నిజానికి నేను అసలు హలో చిన్న పొందండి
కానీ కాపీ కోసం హలో రాజధాని.
కానీ నేను ఇంకా పూర్తి కాదు. నేను ఇక్కడ 1 లాస్ట్ థింగ్ చేయాలి.
46 మరియు 47 స్పష్టంగా మెమరీ ఉండండి, కానీ వాస్తవానికి అర్థం ఏమిటి?
నేను లైన్ 46 మరియు 47 లైన్ కాల్ మీరు, అనుకుంటున్నాను, ఏమి చేస్తున్న?
ఏ ప్రభావం కలిగి ఉన్నారు? అవును.
[వినబడని విద్యార్థి ప్రతిస్పందన] >> ఖచ్చితంగా.
>> మీకు హే, ఇది మెమరీ ధన్యవాదాలు ఆపరేటింగ్ సిస్టమ్ చెప్పడం ఉంటాయి.
మీరు ఇప్పుడు ఎవరో దానిని ఉపయోగించవచ్చు.
మరియు ఇక్కడ చెత్త విలువలు మంచి ఉదాహరణగా ఉంది.
నేను, 2 స్థానాల్లో హలో పదం వ్రాయుటకు ఈ మెమరీ ఉపయోగించారు
ఇక్కడ, ఇక్కడ, ఇక్కడ, మరియు ఇక్కడ.
కాబట్టి ఈ h-e-l-l-o-\ 0.
కానీ నేను లైన్ 46 మరియు 47 లైన్ కాల్, మరియు మీరు చిత్రాన్ని పరంగా అక్కడ ఏమి తెలుసు?
అసలైన, వేచి, ఈ చిత్రం పాత ఒకటి.
మేము కాపీని ఒకసారి, ఈ వ్యక్తి నిజంగా, ఇక్కడ సూచించబడిన
మరలా సంఖ్యలు తొలగించి కేవలం వియుక్త దూరంగా మా బాణాలు వంటి చూద్దాం.
నేను ఉచిత కాల్ ఏమి ఈ చిత్రంలో జరుగుతుంది?
[వినబడని విద్యార్థి ప్రతిస్పందన] >> కూడా.
నేను s మరియు t ఉచిత కాల్ ఉంటే - ఒక ట్రిక్ ప్రశ్న రకం - ఈ చిత్రం అన్ని వద్ద మారదు
s కాల్ మరియు కాలింగ్ ఎందుకంటే t కేవలం, ఆపరేటింగ్ సిస్టమ్ చెబుతుంది
హేయ్, మీరు మళ్లీ ఈ మెమరీ ఉపయోగించవచ్చు, కానీ ఈ శూన్యం మార్పు లేదు
లేదా కొన్ని ప్రత్యేక పాత్ర అది, ఈ మారదు
అది h లేదా ఇ లేదా మరేదైనా గానీ స్థానంలో l లేదా l లేదా o మారదు.
చిత్రం పరంగా, వెంటనే మీకు ఉచిత, ఏమీ మార్పులు కాల్ వంటి.
మరియు అందులో చెత్త విలువలు మూలం ఉంది ఎందుకంటే నేను తర్వాత ఈ కార్యక్రమం లో
ఆ GetString లేదా malloc లేదా లాగ మరింత మెమరీ కోసం ఆపరేటింగ్ సిస్టమ్ అడగండి
మరియు ఆపరేటింగ్ సిస్టమ్, ఖచ్చితంగా, నేను కేవలం విముక్తి మెమరీ 12 బైట్లు కలిగి అన్నారు
ఈ ఉపయోగించడానికి, మీరు జారీ వెళ్తున్నారు?
మీరు మేము సాధారణంగా అందుకున్నాయి ఆ మెమరీ భాగం జారీ వెళుతున్న
ప్రశ్న మార్కులతో, కాని ఆ ప్రశ్న గుర్తులు ఏవి?
H-e-l-l-o, h-e-l-l-o కావడం.
ఈ వెంటనే ఆ మెమరీ వరకు ఉచితం గా మా కొత్త చెత్త విలువలు.
>> ఒక నిజ ప్రపంచ సూత్రప్రాయంగా చాలా ఇక్కడ ఉంది.
ఈ RAM తో జరుగుతుంది, కానీ మీ కంప్యూటర్ల
వాస్తవానికి డిస్క్ తో ఇదే.
మేము ఫోరెన్సిక్స్ దృష్టి సారించిన ఒక భవిష్యత్తు సమస్య సమితి ముఖ్యంగా ఈ గురించి మాట్లాడదాము.
మీరు మీ డెస్క్టాప్ మీద కొన్ని సున్నితమైన ఆర్థిక ఫైలుని కలిగి ఉంటే కాని వాస్తవానికి జరుగుతుంది
లేదా కొన్ని నమూనాలను JPEG మరియు మీరు, మీ ట్రాష్ లోకి లాగండి
మీరు ట్రాష్ లేదా రీసైకిల్ బిన్ లోకి లాగండి ఏమి జరుగుతుంది?
మీరు నేను మాట్లాడుతున్న తెలుసు. [నవ్వు]
మీరు మీ రీసైకిల్ బిన్ లేదా ట్రాష్ కెన్ ఆ సాక్ష్యం లాగారు చేసిన ఏమి జరుగుతుంది?
[వినబడని విద్యార్థి ప్రతిస్పందన]
Well, కాబట్టి జాగ్రత్తగా. మీరు అలా ఏమి జరుగుతుంది?
చిన్న సమాధానం కుడి, కాదు?
అసంపూర్ణం లేదా సున్నితమైన ఫైల్ ఇంకా మీ హార్డు డ్రైవు ఎక్కడో అక్కడ కూర్చొని.
మాకు చాలా కనీసం మీరు మీ ట్రాష్ను ఖాళీ చేయవలసి ఎంత క్లిష్టంగా ఉందో చేశారు
లేదా మీ రీసైకిల్ బిన్ నిజానికి ఫైళ్ళను తొలగించడానికి.
నిజానికి, మీరు కుడి క్లిక్ చేయండి లేదా మీ ట్రాష్ క్లిక్ నియంత్రించండి ఉన్నప్పుడు చెయ్యవచ్చు
లేదా ఫైలు, ఖాళీ ట్రాష్ లేదా ఎలాగైనా ఎంచుకోండి
మరియు మీరు నిజంగానే ట్రాష్ కెన్ లేదా వాస్తవానికి ఈ చిత్రానికి అప్పుడు ఏమి రీసైకిల్ బిన్, ఖాళీ?
మరిన్ని ఏమీ. ఏదీ నిజానికి డిస్కు న జరుగుతుంది.
>> మేము తాత్కాలికంగా రచనలో ప్రస్తుతం ప్రస్తావిస్తున్న అంశాన్ని వదిలేసి వేరే అంశం గురించి చర్చించు మరియు వ్రాయడానికి ఉంటే - I'll ఈ వెనుక ఉపయోగించండి.
కాబట్టి ఇప్పుడు కథ కార్యక్రమాలు అక్కడకు ఇది RAM నుండి మారుతుంది
మీరు డిస్కు, వాటిని అమలు చేస్తున్నారు వారు దీర్ఘకాల నిల్వ ఇక్కడ, ఇది
శక్తి ఇప్పుడు కోసం, విడుదలయ్యింది కూడా - మరియు మేము భవిష్యత్తులో ఈ వచ్చి ఉంటుంది -
లెట్స్ ఈ మీ కంప్యూటర్ యొక్క హార్డ్ డ్రైవ్ లోపల ప్రాతినిధ్యం నటిస్తారు
ఎందుకంటే తన రోజు వారు చాలా ఫ్లాపీ డిస్కుల వంటి వృత్తాకార డిస్కులు ఉండేవారు.
మీరు కొన్ని సున్నితమైన Excel ఫైల్ కలిగి చేస్తే, అది మెమొరీ ఈ భాగం పట్టవచ్చు
మీ కంప్యూటర్ యొక్క డిస్కులో, మరియు నేను అదే ఏకపక్ష 1s మరియు 0 సె గీయడం చేస్తున్నాను.
మీ ట్రాష్కు వలె లాగండి చేసినప్పుడు లేదా బిన్ రీసైకిల్ చేయవచ్చు,
ఆపిల్ మరియు మైక్రోసాఫ్ట్ కేవలం నిర్ణయించుకున్నాను ఎందుకంటే అక్షరాలా ఏమీ జరగలేదు
ట్రాష్ కెన్ మరియు రీసైకిల్ బిన్ నిజంగా ఒక తాత్కాలిక ప్రతిక్షేపణిలు.
బహుశా చివరికి OS మీరు ఖాళీ ఉంటుంది, కానీ సాధారణంగా, ఇది ఏదీ చెయ్యవద్దు
మీరు ఖాళీ న నిజంగా తక్కువ ఉన్నారు కనీసం వరకు.
>> అయితే, మీరు ఖాళీ ట్రాష్ లేదా ఖాళీ రీసైకిల్ బిన్ వెళ్లి,
అదేవిధంగా, ఏమీ ఈ చిత్రం ఏమవుతుంది.
జరిగినప్పుడు అన్ని చోట్ల మీ కంప్యూటర్లో ఉంది, టేబుల్ యొక్క రకమైన ఉంది.
ఇది, resume.doc, సే అనుమతించే అని కొద్దిగా మోసగాడు షీట్ వంటి విధమైన యొక్క
మీ హార్డ్ డిస్క్ లో నగర 123 వద్ద ఉన్నాను ఒక Microsoft Word ఫైల్ లో మీ రెజ్యూమ్
కాదు మెమరీ మరియు కాదు RAM లో కాని మీ హార్డ్ డిస్క్లో,
మరియు 456 మీ నమూనాలను JPEG జీవితాలను, మరియు మీ Excel ఫైల్ 789 వద్ద లేదా అక్కడ నివసిస్తున్నారు.
మీరు నిజంగా చెత్త లేదా రీసైకిల్ బిన్ ఖాళీ ద్వారా ఫైళ్లను తొలగిస్తున్నప్పుడు,
ఈ చిత్రం మారదు. మీ హార్డు డ్రైవు 0 సె మరియు 1s ఎక్కడైనా వెళ్ళరు.
కానీ ఈ పట్టిక, రకాల ఈ చిన్న డేటాబేస్, మార్పు చేస్తుంది.
ఫైలు కొన్ని భావంలో తొలగించబడుతుంది అయితే మీరు మీ పునఃప్రారంభం తొలగించండి, అది ఉంది
ఆ విషయం మీ హార్డు డ్రైవు జీవించింది కానీ కంప్యూటర్ మర్చిపోతే ఉంది లేదు.
మీ రెస్యూమ్ లేదా ఈ ఇతర ఫైళ్ళలో ఏదైనా సృష్టించే 0 సె మరియు 1s ఇప్పటికీ చెక్కుచెదరకుండా.
>> మీరు అనుకోకుండా ఈ చేశాడు అలా అయితే, నాన్ జీరో సంభావ్యత ఇప్పటికీ ఉంది
మీరు నార్టన్ యుటిలిటీస్ లేదా కొన్ని వాణిజ్య సాఫ్ట్వేర్ ఉపయోగించి మీ డేటాను పునరుద్ధరించడానికి చేయవచ్చు
జీవితంలో దీని ఉద్దేశ్యం 0 సె మరియు విధమైన అనాథ చేసిన 1s కనుగొనేందుకు ఉంది
ఇక్కడ మర్చిపోయి కాని మీరు తిరిగి మీ డేటా పొందవచ్చు కనుక, ఇక్కడ వదిలి.
లేదా పోలీసు లేదా FBI తో ఫోరెన్సిక్ పరిశోధకులు వాస్తవానికి హార్డ్ డ్రైవ్ పడుతుంది
మరియు వాస్తవానికి, 0 సె మరియు JPEGs ఎలా, Excel ఫైళ్లను మాదిరిగానే కన్పిస్తాయి 1s యొక్క నమూనాలు కోసం చూడండి
మరియు వాటిని కంప్యూటర్ వాటిని మర్చిపోయారు ఉన్నప్పటికీ ఆ విధంగా తిరిగి.
కాబట్టి మేము భవిష్యత్తులో చర్చించడానికి వీలుగా డేటా తొలగించడానికి నిజంగా ఏకైక మార్గం,
ద్వారా ఫైల్ లేదా హార్డ్ డిస్క్ కుంచెతో శుభ్రం చేయు లేదా తుడిచివేయడానికి ఉంది -
మీరు నిజంగా 0 సె మరియు 1s వదిలించుకోవటం కాదు
లేకపోతే మీరు ఒక గిగాబైట్ హార్డు డ్రైవు ప్రారంభం కావలసిన ఎందుకంటే
మీరు ఎప్పుడు తొలగించడం వలన మరియు మీరు ఒక మెగాబైట్ హార్డ్ డ్రైవ్ తో ముగుస్తుంది భావిస్తున్న
సాహిత్యపరంగా, 0 సె మరియు 1s.
మీరు నిజంగా మీ ట్రాక్స్ పూర్తి చేయాలని అనుకుంటున్నట్లు చేస్తే మీరు ఏమి చేస్తుంది
మరియు ప్రాథమిక సమస్య ఇప్పటికీ 0 సె మరియు డిస్కులో 1s అక్కడ ఉంది?
నేను మీరు భౌతికంగా పరికరం బ్రేక్ అని సైగలు చేయగల ఎవరైనా చూడండి. ఆ పని చేస్తుంది.
అత్యంత ఖరీదైన పరిష్కారం రకంగా ఉంటే [నవ్వు] కానీ, ఏమి మరింత సమంజసమైన ఉంటుంది?
అవును. >> [విద్యార్థి] వాటిని ఓవర్రైట్. >> ఏ వాటిని భర్తీ చేయాలా? >> [విద్యార్థి] ఇతర డేటా.
ఇతర డేటా. మీరు 0 సె లేదా 1s లేదా అన్ని 0 సె, అన్ని 1s మీ డిస్కు తిరిగి రాస్తుంది చేయవచ్చు.
>> మరియు సాఫ్ట్వేర్ కొన్ని ఏమి నిజంగా ఉంది.
మీరు, సాఫ్ట్వేర్ కొనుగోలు లేదా ఉచిత సాఫ్టువేరు పొందవచ్చు
మరియు, తక్కువగా Windows లో, ఈ రోజుల్లో Mac OS కు నిర్మించారు
సురక్షితంగా తొలగించ సామర్ధ్యం.
మీరు నేడు అన్ని హోం రన్ అనుకుంటే అసలైన, మీరు ఒక Mac మరియు ఈ లేకపోతే
మీరు పొందారు మీ ట్రాష్ లో కొన్ని అంశాలు, మీరు, సురక్షిత ఖాళీ ట్రాష్ చేయవచ్చు చేయవచ్చు
ఇది ఖచ్చితంగా ఆ చేస్తుంది.
అయితే ఇక్కడ కేవలం చెరిపివేయి ఫైళ్లు కంటే, అది, 0 సె మరియు 1s ఇక్కడ వేయండి లేదు
బదులుగా, అది కేవలం 0 సె మరియు డాట్, డాట్, డాట్ కు, ఉదాహరణకు, వాటిని అన్ని మార్పులు.
మీ భవిష్యత్తు psets ఒకటి నిజానికి కావాలని డేటాను పునరుద్ధరించడానికి ఉంటుంది -
మేము ప్రాంగణంలో వ్యక్తులు, ప్రదేశాలు, మరియు విషయాల తీసిన చేసిన ఛాయాచిత్రాలు
ఇది కోసం మేము, ఒక డిజిటల్ కెమెరా యొక్క మెమరీ కార్డ్ ఒక ఫోరెన్సిక్ చిత్రం చేస్తాము
ఇది ఖచ్చితమైన ఆలోచన - మరియు మీరు నిజంగానే కనుగొనేందుకు సవాలు ఉంటుంది
మీ హార్డు డ్రైవు JPEGs సూచించే నమూనాలు,
చాలా దీని ఇమెయిల్ మాజీ విద్యార్ధి అని నేను కొన్ని వారాల క్రితం చదివిన చేశాడు
తన సోదరి ఛాయాచిత్రాలను తిరిగి.
ఎందుకు మేము ఇక్కడ ఒక 5 నిమిషాల విరామం లేదు, మరియు మేము జ్ఞాపకశక్తి ఎక్కువ పునఃసమీకరించుకోగలిగాడు చేస్తాము.
కాబట్టి ఇక్కడ విషయాలు కొద్దిగా మనస్సు-వంచి చోటే, కానీ ఇది చాలా శక్తివంతమైన అడుగు
ఈ అన్ని మరింత అర్థం చేసుకునేందుకు.
ఇక్కడ pointers.c అనే ప్రోగ్రామ్.
ఇది నేటి నమూనా కోడ్ ఉంది.
మొదటి కొన్ని లైన్లు లో, 22 ద్వారా 19, మేము చేస్తున్నా అన్ని GetString వంటి ఏదో ఉంది అని గుర్తించలేకపోతే
మరియు s లో నిల్వ, ఒక చిరునామా వచ్చారు.
ఇకమీదట pset కూడా 3 మీకు కావలసిన అయితే pset 4 మరియు న
మీరు, మీ ఆఫ్ ఈ శిక్షణ చక్రాలు మొదలయ్యాయి చేయవచ్చు
తీగలను ఇకపై ఉనికిలో నటిస్తాడు ఏ కారణం ఉంది.
ఇది కచ్చితంగా కేవలం చార్ * చెప్పడం మొదలు సరైందే.
>> జనాంతికంగా, ఆన్లైన్ సూచనలు మరియు పుస్తకాలలో మీరు తరచుగా వేరియబుల్ పక్కన స్టార్ చూడవచ్చు.
మీరు కూడా ఇది రెండు భుజాల చుట్టూ ఖాళీలు చూడవచ్చు.
ఆ అన్ని క్రియాశీలంగా సరైన ఉన్నాయి.
ఇప్పుడు కోసం, అయితే, మేము సూపర్ క్లియర్ చేయడానికి ఈ విధానాన్ని ప్రామాణికంగా చేస్తాము
ఆ చార్ * పాత్ర పాయింటర్ చెప్పడం వంటిది.
ఆ డేటా రకం.
ఆపై వేరియబుల్ పేరు ఈ సందర్భంలో s ఉంది.
కాబట్టి మేము ఒక స్ట్రింగ్ సంపాదించిన చేసిన మరియు మేము అది s అనే చేసిన.
మరియు దిగువకు ఇక్కడ నేను నిజంగా జిత్తుల యొక్క కొద్దిగా చేస్తున్నదాన్ని గుర్తించాము.
ఈ సూపర్ సాధారణ యొక్క విధమైన ఇది అంక గణితానికి, పిలుస్తారు.
ఇది కేవలం గమనికలు ఆ సంఖ్యలను సంకలనం మరియు వ్యవకలనాలకు అర్థం.
కానీ ఈ వాస్తవానికి పనిచేస్తుంది.
ఈ కార్యక్రమం స్పష్టంగా అటువంటి తుది ఫలితంగా ఆ పంక్తికి స్ట్రింగ్ s 1 పాత్ర ముద్రిస్తుంది -
కేవలం ఈ వెళ్లి కౌంటీ, పాడు గమనికలు తయారు, గమనికలు అమలు, నాకు సైన్ జూమ్ తెలియజేయవచ్చు
ఇప్పుడు HELLO మరియు రకం ఎంటర్ లో లాగ నా రకం తెలియజేయండి
మరియు అది పంక్తికి 1 పాత్ర ముద్రిస్తుంది.
అప్ రెండవ క్రితం వరకు, మేము చదరపు బ్రాకెట్ సంజ్ఞామానం ఈ చేసారు అని.
మేము లూప్ ఒక భావిస్తాను మరియు మేము s యొక్క printf చేయండి భావిస్తున్న [i] మరియు మేము మళ్ళీ మళ్లీ మళ్లీ అలా భావిస్తున్న
ప్రతి లైన్ చివరిలో బాక్ స్లాష్ n తో.
కానీ ఈ ప్రోగ్రామ్ భిన్నంగా ఉంటుంది. ఈ కార్యక్రమం, వాచ్యంగా, అంకగణితం ఉపయోగిస్తోంది.
సో వాట్ ఇక్కడ జరగబోతోంది?
ఈ లూప్ కూడా అమలు ముందు అన్ని మొదటి, ఏమిటి, కేవలం స్పష్టతను, s వాస్తవానికి?
S ఉంది? >> [విద్యార్థి] ఒక చిరునామా. >> ఒక చిరునామా.
>> మరియు అది హలో విషయంలో, చిరునామా ఏమిటి, ఆ పదం లో మొదటి అక్షరం, ఇది h ఉంది.
కాబట్టి s, ఈ ప్రత్యేక ఉదాహరణ లో, h యొక్క చిరునామా.
కనుక ఇది s చేయడానికి అర్థం ఏమిటి + i?
Well, నేను లూప్ ఈ 0 మొదలవుతుంది. మేము అనేక సార్లు చేసిన.
నేను స్పష్టంగా, స్ట్రింగ్ యొక్క పొడవు వరకు వెళ్ళి అన్నారు.
కాబట్టి ఈ లూప్ యొక్క మొదటి మళ్ళా, ఐ స్పష్టంగా 0.
బదులుగా, s +0--స్పష్టమైన కేవలం s యొక్క - కాబట్టి ఈ వ్యక్తీకరణ s + i చెబుతున్నారు.
కాబట్టి * ఇక్కడ s ఏమిటి?
ఇప్పుడు మేము కొద్దిగా భిన్నంగా స్టార్ ఉపయోగిస్తున్నారు.
నాకు ముందుకు వెళ్లి మేము T మరియు s కాపీలు గురించి మాట్లాడటం పూర్తి చేసిన ఎందుకంటే t వదిలించుకోవటం లెట్.
ఇప్పుడు మేము s సంబంధించిన కథ చెప్పడం.
అది ముందు చేసిన చాలా ఇష్టం కాబట్టి ఈ సమయంలో, రకం స్ట్రింగ్ తరువాత, మన ప్రపంచం కనిపిస్తోంది
కేవలం s h యొక్క చిరునామా నిల్వ మరియు సాధారణంగా హలో స్ట్రింగ్ వద్ద గురిపెట్టి తో.
నేను ఇప్పుడు * వంటి లైన్ చేస్తే (s + i), ఇది ప్రయత్నించండి.
కాబట్టి * (s + i). ఈ 0 ఎందుకంటే నాకు ఈ సులభతరం తెలియజేయండి, కనుక ఈ * (s +0) ఉంది.
Well, ఒక నిమిషం ఆగండి. మరింత సులభతరం. ఈ * (s).
Well, ఇప్పుడు కుండలీకరణాలు స్టుపిడ్ రకం, అందుచే ఇప్పుడు యొక్క కేవలం చేయండి * s తెలియజేయండి.
కాబట్టి ఈ లూప్, హైలైట్ చేసే ఆ లైన్, 26 మొదటి మళ్ళా లో,
ఈ ప్రింటింగ్ కు చాలా చక్కని సమానంగా ఉంటుంది.
* S యొక్క డేటా రకం ఏమిటి?
స్టార్, s స్వయంగా తర్వాత ఏమవుతుంది ఈ సందర్భంలో, ఎందుకంటే
కానీ ప్రత్యేకంగా, మేము ఇకపై, s ప్రకటించారు ఎందుకంటే
మేము ఇకపై ఒక వేరియబుల్ సృష్టించడం లేదు, లైన్ 26 లో చార్ * యొక్క ప్రస్తావనే లేదు, లేదు
కీవర్డ్ స్ట్రింగ్ యొక్క ప్రస్తావనే లేదు లేదు, మేము, s అనే వేరియబుల్ ఉపయోగిస్తున్నారు
అది ఇప్పుడు స్టార్ అర్థం అయోమయాన్ని ఆమోదం కొద్దిగా భిన్నంగా ఉంటుంది మరియు అవుతుంది.
ఇక్కడ * s ఉంది ఏ s లో చిరునామా మరియు ముద్రణ వెళ్ళండి అర్థం.
కాబట్టి s ఇక్కడే ఉంది, * s ఉంది - క్రమీకరించు చూట్స్ మరియు నిచ్చెనల వంటి యొక్క, బాణం అనుసరించండి - ఇక్కడ.
కాబట్టి ఈ * s ఉంది.
>> కాబట్టి లైన్ 26 ఆ లూప్ యొక్క మొదటి మళ్ళా ఏమి ప్రింట్ అవుతుంది?
నేను ఒక పాత్ర కోసం ప్లేస్హోల్డర్ ఇది% సి, అవ్ట్ ప్రింట్
అప్పుడు ఒక కొత్త లైన్ కోసం ఒక \ n. * (S + i) నేను 0 ఈ కలిగి ఉంటుంది.
సో వాట్ చార్ నేను% సి కోసం ఉంచండి చెయ్యాలి? హెచ్
ఈ వెళ్లి కౌంటీ మీరు బహుశా చూడగలరు - - లూప్ యొక్క తరువాత మళ్ళా లో
తరువాత మళ్ళా నేను స్పష్టంగా 1, కాబట్టి ఈ మార్గాల s +1,
ఇప్పుడు స్టార్ చెప్పడానికి అవసరం ఎందుకంటే తరువాత ఇప్పుడు నేను కుండలీకరణాలు అవసరం
మెమరీ చిరునామా s +1 వెళ్ళండి.
S ఏమిటి? యొక్క సమయంలో వెనక్కి తీసుకుని మరియు ఈ బాణం ఇప్పుడు వాస్తవానికి మాకు ఏ సహాయాలు చేయడం లేదు అని పిలవబడు.
ఈ సంఖ్య 123 నిల్వ ఉంటుంది అని ప్రత్యేకంగా లెట్స్
ఈ స్ట్రింగ్ యొక్క ప్రారంభ హలో, ఈ చిరునామా 123 ఎందుకంటే, ఈ మొదలైనవి 124, మరియు.
నేను s +1 చెప్పడం ఉన్నపుడు రెండవ మళ్ళా న, ఆ, 123 +1 చెప్పడం వంటిది
లేకపోతే 124 గా గుర్తిస్తారు, చార్ రెండవ మళ్ళా న ప్రింట్ అవుతుంది ఏమి కాబట్టి?
మెమరీ చిరునామా 124 వద్ద E.
మేము ఇక్కడ పెట్టడానికి ముందు తరువాత + మళ్లీ, 125, 126, 127, మరియు ఈ లూప్ కృతజ్ఞతగా ఆపి
నేను చాలా అధికంగా కౌంట్ లేదు నిర్ధారించాలి strlen ఉపయోగించి నేను ఎందుకంటే.
కాబట్టి ఆ కూడా ఉంది.
మళ్ళీ, ఈ మేము ఒక వారం క్రితం చేసిన కేవలం అయితే ఉంది.
మేము రెండు చేయాలనుకుంటున్నారా లేదు అయినప్పటికీ నాకు లైన్ దిగువ దాన్ని వ్రాయుటకు అనుమతి.
ఈ ఇప్పుడు ఒకే విధంగా ఉంటుంది.
>> కాబట్టి మేము వారాలు పిలుస్తూ చేశారు s, ఒక స్ట్రింగ్ అయినప్పటికీ, s నిజంగా చార్ * ఉంది.
మేము సూపర్ ఆసన అని అనుకుంటే, అది ప్రత్యేక పాత్ర రాయడానికి నిజంగా సరైన యొక్క
ఈ సంఖ్యా చిరునామాలు మరియు ఈ స్టార్ ఆపరేటర్లు ఉపయోగించి ith స్థానంలో,
కానీ స్పష్టముగా, ఈ చాలా క్లీనర్ ఉంది. కాబట్టి ఈ చెడు లేదు.
, ఏ కారణం ఇక్కడ లైన్ 27 చేయడం నిలిపివేసింది, కానీ 26 క్రియాశీలంగా అదే ఉంది
మరియు అది మేము ఇప్పటివరకు చర్చిస్తున్న చేసిన సరిగ్గా కారణాల క్రియాశీలంగా సేమ్.
చివరికి, 29 కేవలం మంచి పద్ధతి.
S యొక్క ఉచిత కాలింగ్ ఇప్పుడు మీరు GetString మీరు ఇచ్చిన మెమరీ తిరిగి ఇవ్వడం మీరు అర్థం
మళ్ళీ, నేను వారాలు GetString, సోమవారం పేర్కొన్నారు ఎందుకంటే
మీ కోడ్ ఒక బగ్ పరిచయం చేయబడింది.
వారాలు మీ కోడ్ మెమరీ లీకేజ్ ఉంది
అనగా మీరు మెమరీ కోసం GetString కోరుతూ చేసిన కాని మీరు దానిని తిరిగి ఇవ్వడం ఎప్పుడూ చేసిన.
మరియు ఉద్దేశపూర్వకంగా pedagogically మాకు ఎంపిక చేశారు
ఇది ప్రారంభ గురించి ఆలోచించటం చాలా ఎక్కువ ఎందుకంటే.
అయితే ఇప్పుడు మేము మరింత సౌష్టవం అవసరం.
మీరు మెమరీ కంప్యూటర్ అడిగితే, వంటి, GetString సందర్భంగా
ఈ కేసు, malloc కోసం కాదు
మీరు pset 4 తరువాత కూడా ఉచిత ఏ మెమరీ ఇప్పుడు తప్పనిసరిగా.
ఈ Int n చెప్పడం భిన్నంగా ఉంటుంది గమనించండి.
మీరు GetString కాల్ ఎందుకంటే మీరు ఈ ఉచిత లేదు
మరియు మీరు malloc కాల్ లేదు.
>> మేము చివరికి చూస్తారు మరియు కూడా మీరు, GetInt అని ఉంటే
మీరు నిజంగా పూర్ణాంకాల చుట్టూ పాస్ ఎందుకంటే GetInt మీరు మెమరీని కేటాయించాల్సిన లేదు
మరియు మేము వారాలు చేయడం చేసిన జస్ట్ ది వే తేలియాడుతున్న మరియు అక్షరాలు.
నిజంగా వారు బహుళ అక్షరాలు యొక్క కూర్పు ఉన్నారు ఎందుకంటే స్ట్రింగ్స్, అయితే, ప్రత్యేక ఉంటాయి.
కాబట్టి వారు అక్షరాలు మరియు తేలియాడుతున్న మరియు ints నుంచి వివిధ అయి, ఇష్టం.
కానీ మేము చాలా కాలం క్రితమే వచ్చి చేస్తాము.
ఏదైనా ప్రశ్నలు తర్వాత గమనికలు ఈ ప్రారంభమైన? అవును.
[వినబడని విద్యార్థి ప్రశ్న]
ఆహ్, చాలా మంచి ప్రశ్న.
సి అయితే మీరు కొన్ని చేస్తుంది విషయాలు ఒకటి, ఇది సౌకర్యంగా ఉంటుంది
అది పరిమాణం డేటా రకం ఏమిటో కొరకు-xid ఉంది
మరియు మీకు గుణకారం ఆ రకమైన చేస్తుంది.
దాదాపు చార్ 1 బైట్ ఈ, అక్షరాలు విషయంలో సంబంధం లేదు
ఈ పనిచేస్తుంది.
కానీ, చర్చ కొరకు మీరు నిజంగా పూర్ణాంకాల ప్రింటింగ్ ఉంటే
మరియు మీరు, కొన్ని విలువ s పూర్ణాంకం వద్ద గురిపెట్టి ఆ అవ్ట్ ముద్రించడానికి ప్రయత్నిస్తున్న
ఒక పూర్ణాంకానికి 4 బైట్లు * నేను ఎందుకంటే మీరు అదేవిధంగా + 4 చెయ్యాల్సిన కాదు.
పాయింటర్ అంకగణితం సి మరియు కంపైలర్ మీరు అన్ని ఆ గణిత ఉంటారని అర్థం.
మీరు పట్టించుకోనట్లు అన్ని మానవ భావం యొక్క విధమైన లో లెక్కింపు ఉంటుంది. అవును.
[విద్యార్థి] మీరు లూప్ ఒక లోపల స్ట్రింగ్ డిక్లేర్, మీరు తర్వాత ఇది ఉచితం చేయాలి?
ప్రశ్న గుడ్.
>> మీరు లూప్ యొక్క స్ట్రింగ్ లోపల డిక్లేర్డ్, మీరు తర్వాత ఇది ఉచితం చేయాలి?
మీరు GetString లేదా malloc తో కేటాయించాలని స్వేచ్ఛా మెమొరీ అవసరం.
మీరు ఏదో ఇష్టం చెప్పడానికి అయితే - అన్ని కోడ్ సంబంధం ఉంది కాబట్టి నన్ను ఇప్పుడు వంకర జంట కలుపులు ఉంచారు తెలియజేయండి.
మీరు ఈ buggily అయితే ఏదో, పొతే, చార్ * t = s,
t malloc లేదా GetString సంబంధించిన అంశాలను కలిగి లేదు ఎందుకంటే మీరు ఉచిత t లేదు.
మీరు ఈ చేశాడు విరుద్ధంగా ఉంటే, GetString, అప్పుడు అవును, మీరు ఉచిత t వుంటుంది.
నిజానికి, ఆ విధంగా చేయడానికి మీ మాత్రమే అవకాశం స్కోప్ ఇదే విషయం కోసం, ఈ లూప్ లోపల ఇప్పుడు
మేము గతంలో చర్చించారు చేసిన.
లేకపోతే మీరు,, మెమరీ పెడుతోంది మెమరీ కేటాయించడం మెమరీ పెడుతోంది లోనవుతాను
మరియు కార్యక్రమం చివరిలో మీరు, ఆ లూప్ బయట ఉన్నారు ఎందుకంటే
t లేదు, కానీ మీరు ఆపరేటింగ్ సిస్టమ్ చెప్పారు ఎప్పుడూ
మీరు ఇకపై ఆ స్మృతి అవసరం లేదని.
మరియు పొడవైన ముందు, pset 4 లేదా 5 కోసం మేము, Valgrind అని పిలిచే ఒక కార్యక్రమం మీకు యంత్రాంగ చేస్తాము
ఇది, ఇది ఒక అద్భుత ఇంటర్ఫేస్ యొక్క కొంతవరకు సంపాదించి ఆ ఆత్మ లో GDB పోలి ఉంటుంది
కానీ జీవితంలో దాని ప్రయోజనాన్ని మీరు సహాయం చేస్తుంది.
మరియు Valgrind భవిష్యత్తులో మీ కార్యక్రమాలు శోధిస్తుంది ప్రోగ్రామ్
మెమరీ లీకేజ్ కోసం చూస్తూ, GetString లేదా malloc నుండి లేదో,
ఇది మనం చాలా CS50 లైబ్రరీ చెప్పవలసిన అన్ని మరింత ఉపయోగించి ప్రారంభించగలరు.
మేము చివరికి ఇప్పుడు పదజాలం విధమైన మరియు సిద్ధాంతం మానసిక నమూనా విధమైన కలిగి
ఈ విరిగిన కార్యక్రమం పరిష్కరించడానికి తో.
>> కాబట్టి ఈ విరిగిన కార్యక్రమంలో, swap, swap యొక్క లోపల పనిచేస్తుంది
ప్రధాన x మరియు y, రీకాల్ జారీ ఎందుకంటే అయితే, ప్రధాన పని ఎప్పుడూ
మరియు ఆ మాట్లాడటానికి, విలువల ద్వారా ఆమోదించబడ్డాయి.
వాటిలో కాపీలు స్వాప్ కు ఇవ్వబడింది.
Swap చివరి నాటికి ఒక అండ్ బి నిజానికి మార్పిడి జరిగింది,
కానీ కోర్సు యొక్క మేము సోమవారం చర్చించినట్లు x మరియు y, కాలేదు.
నేను ఈ ఇక్కడ వాస్తవానికి పరిష్కారం ఇక్కడ గ్రీన్ ప్రతిపాదిస్తున్నాయి.
మరియు వాస్తవానికి, నాకు కేవలం స్థిరంగా ఉండటానికి నా నక్షత్రాలు తరలించడానికి తెలియజేయండి
అయినప్పటికీ, మళ్లీ, క్రియాశీలంగా ఈ పట్టింపు లేదు.
ఎప్పుడు ఎందుకు అది అవసరం భవిష్యత్తు వారాల్లో మేము వివరించడానికి చేస్తాము.
కాబట్టి గ్రీన్ ఇప్పుడు ఒక పరిష్కారం.
నేను ఈ నక్షత్రాలను అన్ని ఎందుకంటే స్పష్టముగా, అది నిజంగా చాలా messier కనిపిస్తోంది.
నాకు ఒక విషయం అభిప్రాయపడుతున్నారు లెట్.
అది Int * ఒక మరియు Int * b చెప్పినట్లు ఇక్కడ టాప్ లైన్
ఇది ఎల్లప్పుడూ కలిగి ప్రాథమికంగా అదే చేస్తున్నాడు.
ఇది మారడానికి 2 వాదనలు లేదా పారామితులు ప్రకటించటం
ఒక పూర్ణాంకానికి పాయింటర్ ఇది మొదటి, ఒక అని
ఇది యొక్క రెండవ బి అని ఒక పూర్ణాంకానికి పాయింటర్ ఉంది.
ఈ సమయంలో కొత్త అని మాత్రమే విషయం ఒక నక్షత్రం ఉంది అక్కడ వాస్తవం.
>> ఆ శతకము ఒక ఒక పూర్ణాంకానికి కాదు, బి ఒక పూర్ణాంకానికి కాదు.
ఒక ఒక పూర్ణాంకానికి యొక్క చిరునామా మరియు బి వేరే Int యొక్క చిరునామా.
నేను సి గందరగోళంగా గెట్స్ ఒప్పుకుంటే పేరు డౌన్ ఇక్కడ, ఈ ఉంది.
ఇప్పుడు మేము ఒక స్టార్ ఉపయోగించే, కానీ ఈ సందర్భంలో వివిధ అర్ధాన్ని కలిగి ఉంది.
మేము ఇక్కడ ఉంటాయి మేము గమనికలు ప్రకటించారు లేదు ఎందుకంటే,
ఇక్కడ మేము విషయాలు dereferencing ఉంటాయి.
కాబట్టి సాంకేతికంగా, swap యొక్క లోపల, మొదటి రెండవ, మూడవ మరియు లైన్ యొక్క ఈ సందర్భంలో స్టార్
కేవలం అంటే dereference ఆపరేటర్లు, అక్కడ గో.
నా వేలు h బాణం తర్వాత, సో కేవలం
* ఒక అంటే చిరునామాకు వెళ్ళి నాకు అక్కడ Int కనుగొనండి.
* బి అంటే చిరునామా వెళ్ళి ఏమి నాకు పాస్.
కాబట్టి యొక్క సోమవారం ఇప్పుడు ఒక ఫ్రేమ్ల స్టాక్ ఉపయోగించి నుండి చిత్రాన్ని పునర్ తెలియజేయండి
ఇది దిగువ ఒక ప్రధాన అవతరిస్తుంది
ఇది ఎగువ ఒక, swap అవతరిస్తుంది
మన ప్రపంచం ఈ వంటి కేవలం సోమవారం వంటి కనిపిస్తుంది కాబట్టి.
ఇక్కడ ప్రధాన ఉపయోగించడానికి అన్నారు ఆ మెమరీ భాగం ఉంది.
>> కార్యక్రమం కేవలం 2 వేరియబుల్స్ ఉందని సోమవారం నుండి రీకాల్
ఒక X మరియు Y అని ఒక అని, మరియు నేను అక్కడ సంఖ్యలు 1 మరియు 2 ఉంచింది.
ఇప్పుడు నేను వంటి స్వాప్ కాల్ నేను సోమవారం చేశాడు,
నేను ఈ కార్యక్రమం యొక్క ఎరుపు సంస్కరణను ఉపయోగించారు గతంలో ఉన్నప్పుడు, ఇది ఈ కనిపిస్తోంది
నేను 2 పారామితులు, a మరియు b వచ్చింది, మరియు మేము ఇక్కడ మరియు ఇక్కడ ఏమి వ్రాసి లేదు?
కేవలం 1 మరియు 2, సాహిత్యపరంగా x మరియు y ప్రతులు.
ఈ రోజు మనం ఆ మార్చండి.
నేడు బదులుగా ints అక్కడ ఒక అండ్ బి మేము 2 చిరునామాలలో పాస్ చూడాలని.
ఆ చిరునామాలను ints సూచించడానికి జరిగే, కానీ ఆ చిరునామాలను తాము ints లేదు.
వారు చిరునామాలు. ఇది బదులుగా ఒక పోస్టల్ చిరునామా వంటిది.
కాబట్టి ఇప్పుడు మేము నాకు తెరపై కొంచెం వివరాలు ఇవ్వడానికి అవసరం.
అది రోజంతా ఉన్నారు ఈ నా కంప్యూటర్ యొక్క మెమరీ ఉంది.
ఇప్పుడు మేము స్వేచ్ఛా అంకెల పథకాన్ని అవసరం.
కాబట్టి ఈ మెమరీ చిరునామా 123, 124 అని, కేవలం అవకాశం ద్వారా, కేవలం సే తెలియజేయండి.
లెట్ యొక్క ఈ 125 అంటారు, ఈ 126, మరియు మొదలైనవి, కానీ పూర్తిగా ఏకపక్షంగా ఉంది.
మేము నా జ్ఞాపకాలలో కొన్ని అంకెల పథకాన్ని అవసరం.
కాబట్టి ఇప్పుడు నేను నిజంగా x మరియు y లో పాస్, నేను, x మరియు y లో పాస్ వెళ్ళడం లేదు;
నేను x యొక్క మరియు y యొక్క, మాట్లాడటానికి, పోస్టల్ చిరునామా లో పాస్ వెళుతున్న
సో వాట్ ఇక్కడ మరియు ఇక్కడ నిల్వ అవుతుంది 1 మరియు 2 కాదని,
మీరు నా చిన్న టెక్స్ట్ చూడగలరు అయితే ఇక్కడికి మరియు ఇక్కడ జారీ అవుతుంది?
[వినబడని విద్యార్థి ప్రతిస్పందన] >> ఖచ్చితంగా. 123 ఇక్కడ ఉంచే మరియు 124 ఇక్కడ ఉంచే.
>> ఇప్పుడు, ఎందుకంటే నేను, ఎగువ భాగంలో ఇక్కడ ఈ మొట్టమొదటి లైన్ విధంగా స్టార్ ఉపయోగిస్తారు
నా కార్యక్రమం కేవలం వారు స్పష్టంగా పూర్ణాంకాల ఉన్నప్పటికీ, ఆ 123 మరియు 124 తెలుసు
ఏ మానవ గమనించి అని, వారు చిరునామాలు, సంఖ్యా చిరునామాలను వలె అంచనా ఉండాలి.
వారు ints మరియు తమ యొక్క కాదు, వారు, చిరునామాలు ఉన్నారు
నేను స్పష్టంగా అక్కడ నక్షత్రాలు చేసి ఎందుకంటే మరియు ఆ.
కాబట్టి ఇప్పుడు ఇక్కడికి జరిగినప్పుడు అసలు కోడ్ నా మొదటి, రెండవ, మూడవ మరియు లైన్ లో?
చిత్రం యొక్క మిగిలిన డ్రా లెట్.
Tmp దీనిని సోమవారం లాగానే ఉంది. Tmp గురించి ప్రత్యేకించి ఏమీ లేదు.
ఇది కేవలం ఒక స్థానిక 32 బిట్స్ వేరియబుల్, మరియు లోపల యొక్క నేను స్పష్టంగా * ఒక విలువ నిల్వ am.
ఇప్పుడు, నేను చెప్పారు ఉంటే tmp = ఒక, నేను ఇక్కడ ఏమి ఉంచుతాడు? >> [విద్యార్థి] 123.
123. కానీ నేను ఏమి కాదు.
నేను tmp మాట్లాడుతూ నేను = * ఒక. స్టార్ అంటే అక్కడ వెళ్ళండి.
ఇక్కడ ఒక, 123 ఉంది. నేను ఎలా ఉన్నాయి గో? ఒక బాణం ఉన్నట్లు నటిస్తారు.
Well, అక్కడ అది, 1. కాబట్టి స్పష్టంగా, tmp లో ఏం నిల్వ అవుతుంది? కేవలం 1.
కాబట్టి ఇతర మాటలలో, tmp * ఒక, * ఒక పద్ధతిలో ఒక ప్రస్తుతానికి ఆ చిరునామాకు గో,
ఇది స్పష్టంగా 123 ఉంది.
>> సరే, ఇక్కడ మేము నగర 123 ఉన్నాయి, నేను, సంఖ్య 1 చూడండి
నేను అక్కడ 1 ఉంచారు వెళుతున్న.
ఇప్పుడు నేను పంక్తి 2 ఏమి, * a = b *?
ఒక ఏమిటి ఇప్పుడు ఎందుకంటే ఈ ఒక కొంచెం సంక్లిష్టమైంది? ఇది 123 ఉంది.
కాబట్టి * ఒక ఎక్కడ ఉంది? కుడి నేను ముందు ఉన్నారు. సో అక్కడ వెళ్ళండి. సరే.
ఇప్పుడు, చివరగా, ఆపై చివరకు ఈ, ఆశాజనక, సమంజసం మొదలవును
* బి బి లో ఏమి అర్థం? 124. నేను 2 ఇది అక్కడ వెళ్లాలి.
నేను ఎక్కడ ఏమి ఉంచగలను?
* B * ఒక లోకి వెళుతుంది కాబట్టి 2 ఇక్కడ వెళతాడు. కాబట్టి చేస్తాను.
మరియు మీరు ఇప్పటికే ఎక్కువ దగ్గరగా ఉన్నట్లు, బహుశా, చూడగలరు
మొదటి సారి సరిగ్గా ఈ స్టుపిడ్, సాధారణ సమస్య పరిష్కారానికి
ఇప్పుడు మేము ఇప్పటికీ x ఎలా ఒక జ్ఞప్తికి తెచ్చుకొను ఎందుకంటే,
మేము, Y యొక్క, ఆమోదం 2 కాపీలు ఉన్నాయి
కానీ లైన్ 3 ఇప్పుడు * b చెప్పారు.
ఇక్కడ బి ఉంది. * బి అంటే అక్కడ వెళ్ళండి. కాబట్టి నగర 124 ఎక్కడ ఉంది?
ఇది ఇక్కడ స్పష్టంగా ఉంది. నేను ఇక్కడ ఏమి ఉంచగలను? నిజానికి, tmp.
కాబట్టి ఇప్పుడు నేను దీన్ని. నేను ఇక్కడ 1 ఇక్కడ మరియు 2 ఉన్నాయి.
ఇప్పుడు ఈ అన్ని 123, 124, మరియు 1 గురించి?
వెంటనే swap పునరాగమనం, ఈ జ్ఞాపకశక్తి కోల్పోయే వలె మంచిగా ఉంది
వెంటనే swap తిరిగి, ఆపరేటింగ్ సిస్టమ్ వంటి ఎందుకంటే
భవిష్యత్తులో మళ్ళీ ఆ స్మృతి ఉపయోగించడానికి ఉచితం.
ఈ అని పిలవబడే స్టాక్ దిగువన మాత్రమే ప్రధాన యొక్క మెమరీ చుట్టూ అంటుకుని ఉంటుంది.
>> కాబట్టి మేము చివరకు ఇప్పుడు ఒక పని సంస్కరణను కలిగి ఉన్నారు.
నాకు swap.c వెళ్ళండి, మరియు క్రింది గమనించి లెట్.
కార్యక్రమం ఎగువన నా నమూనా అని మార్చారు Int * ఒక మరియు Int * బి.
నేను చెడు ఇది ఎరుపు,, నుండి మంచి ఇది ఆకుపచ్చ, వెళ్ళి మార్చారు ఒకే ఒక విషయం,
నేను ఈ రోజు ఈ నక్షత్రాలను జోడిస్తారు.
కానీ డౌన్ ఇక్కడ కూడా స్వాప్ నేను కాపీ వచ్చింది, కేవలం స్లయిడ్ లో ఏమి అతికించండి.
నేను ఇక్కడ ఒక స్టార్ ఉంది, ఇక్కడ స్టార్ - ఆ నమూనా సరిపోలే -
మరియు ఈ అన్ని విషయాలను ఇప్పుడు tmp తప్ప నక్షత్రాలు ఉన్నాయి
ఒక తాత్కాలిక వేరియబుల్ ఉపయోగించడం వలన, కొత్త ఏమీ లేదు లేదు.
నేను ఒక పూర్ణాంకానికి తాత్కాలిక నిల్వ అవసరం.
కాబట్టి మేము అక్కడ ఒక స్టార్ అవసరం లేదు.
మేము ఏకపక్ష సరిహద్దు యొక్క ఈ విధమైన cross విధంగా మేము స్టార్ అవసరం
నా కంప్యూటర్ యొక్క మెమరీ లో ఈ 2 ఫ్రేమ్ల మధ్య.
కానీ ఒక విషయం గత మార్చడానికి ఉంది, మరియు మీరు ఇప్పటికే అది చూడటం ఉండవచ్చు.
ఏ ఇతర లైన్ ఇప్పుడు స్పష్టంగా వైవిధ్యంగా ఉంటుంది? >> [విద్యార్థి] & x.
>> అవును, కాబట్టి 25 నేను పని ఈ కోసం మార్చాలి కోడ్ చివరి పంక్తి.
ఒక వారం క్రితం కూడా సోమవారం లైన్ 25 ఇలా, x మరియు y, స్వాప్
మీరు చెప్పుకోవాలంటే ఎందుకంటే మరియు ఈ కేవలం ఉల్లంఘించబడింది స్వాప్ (x, y)
మీరు, అది దాని విషయం ఏమి, మారడానికి x మరియు y యొక్క కాపీలు ఇస్తున్నారు
కానీ మీరు నిజంగా x మరియు y కూడా మారుతున్న ఎప్పుడూ చేస్తున్నారు.
మీరు కోడ్ ఆంపర్సండ్ చిహ్నం తో ముందు ఈ పాత్ర ఎప్పుడూ చూడలేదు కాబట్టి కూడా,
కేవలం ఒక అంచనా పడుతుంది. ఆంపర్సండ్ చిహ్నం స్పష్టంగా, ఏమి చేస్తుంది?
[విద్యార్థి] చిరునామా టేక్స్. >> చిరునామా టేక్స్.
కాబట్టి ఆంపర్సండ్ చిహ్నం నాకు x యొక్క చిరునామాను ఇవ్వండి అని.
అది ఎక్కడ ఎవరు తెలుసు? ఇది 123 నిర్మాణము. నేను పట్టించుకోను. నా x యొక్క చిరునామాను ఇవ్వండి.
& పీ నాకు y యొక్క చిరునామాను ఇవ్వండి అర్థం.
మరియు కథ చిత్రంతో ఖచ్చితంగా స్థిరంగా ఉంటుంది ఆ సమయంలో మేము ఒక క్షణం క్రితం ఆకర్షించింది.
>> నేను మొదటి ఈ నేర్చుకోవడం ప్రారంభించింది కనుక నేను, నాకు ఖచ్చితంగా, గమనికలు ఒప్పుకుంటే చేస్తాము
ఖచ్చితంగా చుట్టూ నా మనస్సు మూసివేయాలని కష్టతరమైన పనులు ఒకటి.
కానీ, మేము విషయాలను ఈ రకాల ఆడటం ఉంచేందుకు ముఖ్యంగా, తెలుసుకుంటారు
మీరు ఈ సూపర్ సాధారణ విధమైన అది విచ్ఛిన్నం ఉంటే మేధస్సును సమస్యలు రసహీనమైన
కేవలం గమనికలు గందరగోళం చాలా వరకు చుట్టూ సమాధానం సంఖ్యలు కదిలే
నిజంగా ఈ ప్రాధమిక మెకానిక్స్ నుండి చేయవచ్చు.
ఇక్కడ ఒక చిరునామా ఉంది. స్టార్ తో అక్కడ వెళ్ళండి.
లేదా దీనికి విరుద్ధంగా, ఇక్కడ ఒక ఆంపర్సండ్ చిహ్నం ఉంది. చిరునామా నిజానికి ఏమిటి అవ్ట్ Figure.
అన్ని కుడి.
కాబట్టి ఇది మెమరీ నుండి వస్తోంది?
, మేము ఈ చిత్రాన్ని సార్లు రెండు డ్రా, నేను మేము అది తిరిగి వచ్చి మీరు మంచి ఉంచడానికి
కానీ ఇక్కడ మీ కంప్యూటర్ యొక్క మెమరీ ప్రాతినిథ్యం
ఆ ఇక్కడ కొంచెం లేబుల్ మా సుద్ద బోర్డ్ కంటే ఎక్కువగా ఉపయోగించారు.
ఎగువన టెక్స్ట్ విభాగంలో మీ ప్రోగ్రామ్ సంబంధించి ఏ సూచిస్తుంది?
[వినబడని విద్యార్థి ప్రతిస్పందన] >> క్షమించాలి? మళ్ళీ సే.
[విద్యార్థి] వాస్తవ కార్యక్రమం. >> అసలు కార్యక్రమం.
>> 0 సె మరియు మీరు సి కోడ్ రాసిన తరువాత సంకలనం చేసిన 1s మరియు అప్పుడు నడుస్తున్న గణగణమని ద్వని చేయు కాబట్టి
మరియు 0 సె మరియు 1s ముగుస్తుంది ఉత్పత్తి మెమరీ లో ఉంచి విధానం
మీరు డబుల్ మీ Mac లేదా PC లో ఒక ఐకాన్ క్లిక్ చేసినప్పుడు ఎందుకంటే
లేదా మీ 0 సె మరియు 1s డిస్క్ నుండి, మీ ప్రాంప్టులో మారియో వంటి ఆదేశాన్ని
కంప్యూటర్ వాటిని చేయవచ్చు తద్వారా మెమోరీలో లోడ్ get
మరియు వీటిని చాలా తొందరగా అమలు.
కాబట్టి initialized డేటా మరియు అవినియోగిత డేటా, మేము, ఆ గురించి ఎక్కువ మాట్లాడను కనిపిస్తుంది
కానీ కేవలం కొన్ని ప్రపంచ వేరియబుల్స్ ఉన్నాయి.
Initialized మీకు విలువలు ఇచ్చిన ప్రపంచ వేరియబుల్స్ అర్థం;
అవినియోగిత మీరు ఇంకా వరకు విలువలను ఇవ్వలేదని ప్రపంచ వేరియబుల్స్ అర్థం.
అప్పుడు నేను పూర్తిగా నా చేతి దుర్చాల్సిన మేము ఈ పరిసరం, లేదు
కానీ అవి ఆ మీ యూజర్ పేరు దుకాణాలలో విషయాలు
తక్కువ స్థాయి వివరాలు మరియు ఇతర విధమైన.
కానీ మీ మెమరీ లేఅవుట్ యొక్క juiciest ముక్కలు స్టాక్ మరియు కుప్ప అని ఈ విషయం ఉంది.
మళ్ళీ స్టాక్ స్పష్టతను, ధర్మాలని పిలుస్తారు చేసినప్పుడు ఉపయోగించబడుతుంది మెమరీ
స్థానిక వేరియబుల్స్ ఉన్నాయి చేసినప్పుడు
మరియు చేసినప్పుడు పారామితులు చుట్టూ అక్కడ జారీ చేస్తున్నారు.
ఆ అన్ని స్టాక్ జరుగుతుంది.
కుప్ప మేము గురించి మాట్లాడారు, కాని కుప్ప ఉపయోగించే ఒక అంచనా పడుతుంది లేదు.
మెమరీ వేరొక భాగం.
ఇది ఎగువన ఇక్కడ డ్రా నిర్మాణము, కానీ ఆ ఏకపక్ష చిత్ర సమావేశముల.
అది వారాలు కుప్ప నుండి మెమరీ ఉపయోగించడం చేయబడింది?
ఇది సాంకేతికంగా మీరు కానీ పరోక్షంగా ఉంది. >> [విద్యార్థి] GetString.
GetString మరియు malloc. ఇక్కడ మౌలిక భేదాన్ని ఉంది.
>> మీరు మెమరీ అవసరం ఉంటే, ఒక వేరియబుల్ డిక్లేర్ గత కొన్ని వారాలు తెలుసు.
మీరు మెమరీ మా ఉంటే, లోపలే మీ విధి యొక్క వ్యూహం ప్రకటిస్తాయి.
మీరు స్థానికంగా లోపల విధులను వేరియబుల్స్ డిక్లేర్ అయితే మేము ఎదుర్కొంటున్న ఉంచింది చేసిన సమస్య ఉంది
వెంటనే తిరిగి వచ్చే చర్యలు వంటి, ఏ మెమరీ మరియు ఆ వేరియబుల్స్ ఏమవుతుంది?
అది కేవలం విధమైన హక్కు, మీదే గడువు ముగిసిన? ఇది కేవలం సంభావితంగా యొక్క విధమైన అదృశ్యమవుతుంది.
ఇది సహజంగా, భౌతికంగా ఇప్పటికీ, కానీ ఇకపై ఉపయోగించడానికి మీ సరియే.
మీరు జీవితంలో విధులు రాయడానికి మీరు అనుకుంటే ఇది ఏమాత్రం సమస్యాత్మకం
నిజానికి మెమరీ కేటాయించాలి మరియు అది వెంటనే తిరిగి ఇవ్వాలని లేదు అని.
పాయింట్ కేస్: జీవితంలో GetString యొక్క ప్రయోజనం ముందుగానే సంఖ్య ఆలోచన ఉంది ఉంది
ఎలా నేను కీబోర్డ్ వద్ద టైప్ వెళుతున్న ఒక స్ట్రింగ్ యొక్క పెద్ద,
కానీ డేవిడ్ లేదా హలో పట్టుకుని మెమరీని కేటాయించాల్సిన చేయగలరు తీరవలసినదే
యూజర్ సైన్ టైప్ ఉండవచ్చని లేదా మొత్తం వ్యాసం
కాబట్టి GetString malloc ఉపయోగించింది.
Malloc కాబట్టి కాదు స్టాక్ ఉపయోగించి తప్పక;
బదులుగా ఇది కుప్ప అని ఈ విషయం ఉపయోగించి మాత్రమే.
మెమరీ గురించి వివిధ ఏదీ లేదు. ఇది వేగంగా లేదా నెమ్మదిగా లేదా అలాంటిదే మాత్రం కాదు.
ఇది మరొక స్థానాన్ని కేవలం భౌతికంగా ఉంది.
>> కాని ఈ నియమం అని కుప్ప కేటాయింపబడుతుంది చేసే మెమరీ
మీరు కాల్ వరకు మీరు దూరంగా తీసుకెళ్లడం ఎప్పటికీ - ఒక అంచనా పడుతుంది - ఉచిత.
దీనికి విరుద్ధంగా, ఏదైనా మెమరీ మీరు వ్యూహం ప్రకటిస్తూ స్టాక్ న గోవా
లేదా మేము వారాలు చేయడం చేసిన వంటి వేరియబుల్ ప్రకటించారు,
డిఫాల్ట్ ద్వారా స్టాక్ న ముగుస్తుంది.
మరియు ఆ అరుదైన సందర్భాలలో సమయం గొప్ప 90% పనిచేస్తుంది, కానీ
మీరు, మెమరీని కేటాయించాల్సిన మరియు దాని చుట్టూ ఉంచాలని పేరు
అప్పుడు మీరు malloc వంటి ఫంక్షన్ ఉపయోగించాలి.
లేదా మేము బదులుగా malloc ఉపయోగించే GetString, ఒక ఫంక్షన్ ఉపయోగించారు.
ఈ విచ్ఛిన్నం మరియు తరువాత Binky ఒక పీక్ పడుతుంది పేరు యొక్క చూసేలా.
మేము భవిష్యత్తులో ఆ వచ్చి చేస్తాము.
ఇక్కడ మొదటి 2 లైన్స్ లో చేసే సూపర్ సాధారణ ప్రోగ్రామ్?
ఇంగ్లీష్ లో కోడ్ యొక్క ఈ మొదటి 2 లైన్లు లోపల ప్రధాన ఏమి చేయాలి?
[వినబడని విద్యార్థి ప్రతిస్పందన]
జాగ్రత్త. ఇది నాకు X లేదా Y యొక్క చిరునామా ఉండదు.
[విద్యార్థి] ints కు గమనికలు ఇస్తుంది. >> గుడ్. పూర్ణాంకాల నాకు 2 గమనికలు ఇవ్వండి.
ఇతర మాటలలో, నాకు ఈ రోజు డ్రాయింగ్ కొనసాగించండి మెమరీ 2 భాగాలు, ఇవ్వండి
అయినప్పటికీ నేను చతురస్రాకార, ఇప్పుడు అది తుడిచివేసింది.
నాకు మెమరీ 2 భాగాలు ఇవ్వండి, ఒక x అనే ఒక y అనే -
మునుపటి నేను s మరియు t అని - మరియు మెమరీ ఆ భాగం యొక్క రకం ఏమిటి?
ఇది ఒక చిరునామా నిల్వ చెప్పారు.
టైపు Int * యొక్క ఉంటుంది.
>> కాబట్టి ఒక పూర్ణాంకానికి యొక్క చిరునామా చివరికి, x నివసిస్తున్నారు కనిపిస్తుంది
ఒక పూర్ణాంకానికి యొక్క చిరునామా చివరికి, Y నివసిస్తున్నారు కనిపిస్తుంది
కానీ ముందుగా, x మరియు y యొక్క లోపల ఏముంది? ఎవరు తెలుసు? చెత్త విలువలు.
ఇది గమనికలు తో లేదు.
మేము అక్కడ నిజంగా ఏమి తెలిసిన అక్కడ ఏదో, పెట్టలేదు ఉంటే?
ఇప్పుడు, x. ఇక్కడికి జరుగుతుంది? X ఒక పాయింటర్ ఈ ఇప్పుడు సక్రమం ఉంది. ఇది ఒక పూర్ణాంకానికి * ఉంది.
నేను x లో మెమరీ కొన్ని భాగం యొక్క చిరునామా ఉంచవచ్చు అనగా.
Malloc ఏమిటి తిరిగి లేదు? పర్ఫెక్ట్, అది, చిరునామాలు తిరిగి
మెమరీ మొత్తం భాగం మొదటి బైట్ యొక్క చిరునామా.
ఈ స్పష్టంగా పరికరంలోని, ఉదాహరణకు, ఎన్ని బైట్లు పెడుతోంది ఉంది?
ఒక పూర్ణాంకానికి యొక్క పరిమాణం ఏమిటి? 4.
మీరు వారం 1 తిరిగి భావిస్తే, అది ఎప్పుడూ గుర్తుంచుకోవడం ముఖ్యం సూపర్ కాదు
కానీ ఈ విషయంలో అది, 4 బైట్లు తెలుసుకోవటానికి ఉపయోగం.
కాబట్టి ఈ కుప్ప 4 బైట్లు న పెడుతోంది ఉంది
మరియు కక్ష్య నాకు మొదటి ఒకటి చిరునామా తిరిగి ఉంది.
ఇప్పుడు, x ఏమి ఉంది?
A * x = 42 ఏమి ఉంది?
మేము కొన్ని చెత్త విలువతో ఈ కనిపిస్తోంది, x, కలిగి కథ ఈ సమయంలో ఉంటే
ఈ ఇప్పుడు లైన్ 3 లో నేను 4 బైట్లు కేటాయించింది చేసిన, ఇప్పుడు కొన్ని చెత్త విలువతో y ఉంది.
ఈ చిత్రం ముఖ్యంగా ఈ కనిపిస్తోంది.
ఈ ఏకపక్ష చిరునామా 123 ఉంటే లేదా ప్రత్యేకంగా, ఈ మా కథ ఇప్పుడు ఎలా ఉంది.
* X = 42 ఇప్పుడు అర్థం? చిరునామా 123 కు వెళ్ళి అనేక 42 ఉంచారు అనగా.
మేము తీగలను చేయడం లేదు ఎందుకంటే నేను ఈ పంక్తులు డ్రా అవసరం లేదు.
>> నేను, ఈ వంటి రాసిన, మరియు కేవలం ప్రదర్శన కోసమని వుండాలి
ఒక పూర్ణాంకానికి రకమైన వంటి 42, 4 బైట్లు స్పేస్ చాలా తీసుకుంటుంది.
కాబట్టి ఆ అక్కడ జరిగిన ఏమి, కానీ సమస్య ఇప్పుడు లేదు.
* Y = 13. ఇక్కడికి జరిగే అవకాశముంది?
సమస్య మా సరళమైన ప్రపంచంలో * Y కేవలం Y చిరునామా వెళ్ళండి అర్థం.
Y లో ఏమిటి? ఇది కొన్ని చెత్త విలువ ఏమిటి.
కాబట్టి ఆ చెత్త విలువ, ఆ క్రేజీ లైక్ ఏదో 5551212 అని యొక్క ఊహించుకోవటం తెలియజేయండి.
* Y అంటే 5551212 చిరునామాకు వెళ్లు.
ఇక్కడ పైగా ఇష్టం అన్నారు. ఇది ఉదాహరణకు, లేదు.
కాబట్టి * Y నేను ఇక్కడ 13 డ్రా దీనికై 13 అంటే పొందుతాడు. ఇది లేదు.
నేను నల్లబల్ల యొక్క విభాగం అధిగమించారు. నేను ఏం వస్తుందా?
నేను మెమరీ అందించేందుకు దీనికై ఎందుకంటే ఆ గుప్తమైన సందేశాన్ని విభజన లోపంగా
ఉనికిలో లేని ఒక ప్రదేశంలో 13 వంటి విలువ.
కార్యక్రమం మిగిలిన అది కాదు ఆ సమయం వరకు సరే, అయితే పనిచేయవచ్చు.
కాబట్టి యొక్క ఈ కథ చెప్పడానికి ప్రయత్నించండి తెలియజేయండి.
మేము ఆ మేము hex గురించి మాట్లాడారు చేసిన తర్వాత తిరిగి వచ్చి ఉంటుంది.
యొక్క ఈ తిరిగి వెళ్ళి Binky అని ఈ విషయం ముగుస్తుంది లెట్
ఇది రీకాల్ స్ ఎ క్లెమేషన్ ఆడటం ఇంట్లో కూర్చొని ఒక స్టాన్ఫోర్డ్ ప్రొఫెసర్
సరిగ్గా అదే కార్యక్రమం యొక్క కథ చెప్పడం.
ఇది కేవలం పొడవైన 3 నిమిషాలు ఉంటుంది. ఇక్కడ మేము Binky ఉన్నాయి.
[వీడియో న పురుషుడు స్పీకర్] హేయ్ Binky, మేల్కొలపడానికి. ఇది పాయింటర్ వినోదం కోసం సమయం.
[Binky] ఆ ఏమిటి? గమనికలు గురించి తెలుసుకోండి? ఓహ్, GOODY!
[పురుషుడు స్పీకర్] Well, ప్రారంభించడానికి, మనం ఒక జంట గమనికలు అవసరం చూడాలని అనుకుంటున్నాను.
>> [Binky] సరే. ఈ కోడ్ పూర్ణాంకాల లను సూచిస్తుంది ఇది 2 గమనికలు కేటాయించుకునే.
[పురుషుడు స్పీకర్] సరే. Well, నేను 2 గమనికలు చూడండి, కానీ వారు ఏదైనా ను సూచిస్తాయి కనిపించడం లేదు.
[Binky] కుడి యొక్క. మొదట్లో, గమనికలు ఏదైనా సూచించడానికి లేదు.
వారు సూచించడానికి విషయాలు pointees అని, మరియు వాటిని ఏర్పాటు చేయడం ప్రత్యేక అడుగు ఉంటాయి.
[పురుషుడు స్పీకర్] ఓహ్, హక్కు,. నేను తెలుసు. pointees విడిగా ఉంటాయి.
Er, కాబట్టి మీరు ఒక pointee కేటాయించాలని చెయ్యాలి?
[Binky] సరే. ఈ కోడ్ ఒక కొత్త పూర్ణాంక pointee కేటాయించుకునే, మరియు ఈ భాగం x అది సూచించడానికి అమర్చుతుంది.
[పురుషుడు స్పీకర్] హేయ్, మంచి కనిపిస్తోంది.
కాబట్టి అది ఏదో ఒకటి చేయండి. >> [Binky] సరే.
నేను dereference పాయింటర్ x దాని pointee లోకి సంఖ్య 42 నిల్వ చేస్తాము.
ఈ ట్రిక్ కోసం నేను dereferencing నా మాజిక్ మంత్ర చేయాలి.
[పురుషుడు స్పీకర్] dereferencing యొక్క మీ మేజిక్ మంత్రదండం? ఆ గొప్ప పని.
[Binky] ఈ కోడ్ ఎలా ఉంది. నేను ఏర్పాటు మరియు చేస్తాము ... [ధ్వని పాపింగ్]
చూడండి [పురుషుడు స్పీకర్] హేయ్, అక్కడ అది వెళుతుంది.
కాబట్టి x ఒక dereference చేయడం, బాణం దాని pointee ప్రాప్తి చేయడానికి క్రింది
ఈ సందర్భంలో అక్కడ 42 నిల్వ.
హేయ్, ఇతర పాయింటర్, Y ద్వారా సంఖ్య 13 నిల్వ దానిని ఉపయోగించి ప్రయత్నించండి.
[Binky] సరే. నేను y ఇక్కడ వెళ్ళి సంఖ్య 13 ఏర్పాటు పొందుతారు
మరియు అప్పుడు dereferencing మరియు మంత్రదండం పడుతుంది ... [సందడిగల ధ్వని] ఆహా!
[పురుషుడు స్పీకర్] హేయ్ ఓహ్, ఆ పని చేయలేదు.
>> Binky, సే, నేను y dereferencing మంచి ఆలోచన కాదు అనుకునే
pointee ఏర్పాటు ప్రత్యేక అడుగు ఎందుకంటే
మరియు మనం ఎప్పుడూ చేసియున్నారు భావించడం లేదు.
[Binky] అయ్యో, మంచి పాయింట్.
[పురుషుడు స్పీకర్] అవును. మేము పాయింటర్ Y కేటాయించింది అయితే pointee సూచించడానికి సెట్ ఎప్పుడూ.
[Binky] అయ్యో, చాలా గమనించే.
[పురుషుడు స్పీకర్] హేయ్, మీరు Binky, అక్కడ మంచి ఉన్నాము.
మీరు దాన్ని పరిష్కరించడానికి చేసే x అదే pointee కు y పాయింట్లు? >> [Binky] షూర్.
నేను పాయింటర్ అప్పగించిన నా మాజిక్ మంత్ర ఉపయోగిస్తాము.
[పురుషుడు స్పీకర్] ముందు వంటి సమస్య అన్నారు ఆ?
[Binky] లేదు, ఈ pointees టచ్ లేదు.
ఇది మరొక అదే విషయం సూచించడానికి ఒక పాయింటర్ మారుస్తుంది. [ధ్వని పాపింగ్]
[పురుషుడు స్పీకర్] ఓహ్, నేను చూడండి. X అదే స్థానంలో ఇప్పుడు Y పాయింట్లు.
కాబట్టి వేచి. ఇప్పుడు Y పరిష్కరించబడింది. ఇది ఒక pointee ఉంది.
కాబట్టి మీరు 13 పంపడానికి మళ్ళీ dereferencing యొక్క దండం ప్రయత్నించవచ్చు.
[Binky] ఉహ్, సరే. ఇక్కడ వస్తుంది. [ధ్వని పాపింగ్]
[పురుషుడు స్పీకర్] హేయ్, ఆ దృష్టి. ఇప్పుడు Y పనులు dereferencing.
గమనికలు ఒక pointee భాగస్వామ్యం ఎందుకంటే, వారు రెండు 13 చూడండి.
[Binky] అవును, భాగస్వామ్యం. ఏమైనప్పటికీ.
>> కాబట్టి మేము ఇప్పుడు ప్రదేశాలు మారడానికి వెళ్తున్నారు?
[పురుషుడు స్పీకర్] లుక్ ఓహ్, మేము సమయం లేదు. >> [Binky] కానీ -
[పురుషుడు స్పీకర్] 3 పాయింటర్ నియమాలు జస్ట్ గుర్తు.
సంఖ్య 1, ప్రాథమిక నిర్మాణాన్ని మీరు ఒక పాయింటర్ కలిగి ఉంది మరియు ఇది ఒక pointee కు చూపాడు.
కానీ పాయింటర్ మరియు pointee విడిగా ఉంటాయి, మరియు సాధారణ లోపాన్ని పాయింటర్ ఏర్పాటు చేయడం
కానీ ఒక pointee ఇవ్వాలని మర్చిపోవటానికి.
సంఖ్య 2, పాయింటర్ dereferencing పాయింటర్ మొదలవుతుంది మరియు దాని బాణం క్రింది
దాని pointee ప్రాప్తి చేయడానికి.
మేము అన్ని తెలిసి ఒక pointee ఉంటే ఈ మాత్రమే పనిచేస్తుంది
ఇది రకమైన సంఖ్య 1 పాలన వచ్చేస్తుంది.
సంఖ్య 3, పాయింటర్ అప్పగించిన ఒక పాయింటర్ తీసుకుని మార్చుకుంటారు
మరొక పాయింటర్ అదే pointee మార్చాలి.
కాబట్టి అప్పగించిన తర్వాత, 2 గమనికలు అదే pointee కు ఆకర్షిస్తాయి.
కొన్నిసార్లు భాగస్వామ్య అని.
>> మరియు ఆ నిజంగా అది ఉంది అంతే. ఇప్పుడు బై-బై.
ఈ Binky ఉంది. ఈ CS50 ఉంది. వచ్చే వారం మీరు చూస్తారు. [చప్పట్లు]
>> [CS50.TV]