[Powered by Google Translate] זאל ס רעדן וועגן ערייז. אַזוי וואָס וואָלט מיר אלץ ווילן צו נוצן ערייז? געזונט לאָזן ס זאָגן איר האָבן אַ פּראָגראַם וואָס דאַרף צו קראָם 5 תּלמיד ידס. עס זאל ויסקומען גלייַך צו האָבן 5 באַזונדער וועריאַבאַלז. פֿאַר סיבות מיר וועט זען אין אַ ביסל, מיר וועט אָנהייבן קאַונטינג פון 0. די וועריאַבאַלז מיר וועט האָבן וועט זייַן ינט יד0, ינט יד1, און אַזוי אויף. קיין לאָגיק מיר ווילן צו דורכפירן אויף אַ תּלמיד שייַן וועט דאַרפֿן צו זייַן קאַפּיד און פּייסטיד פֿאַר יעדער פון די תּלמיד ידס. אויב מיר ווילן צו קאָנטראָלירן וואָס סטודענטן פּאַסירן צו זייַן אין קס50, מיר וועט ערשטער דאַרפֿן צו טשעק אויב יד0 רעפּראַזענץ דער תּלמיד אין דעם קורס. דעריבער צו טאָן די זעלבע פֿאַר די ווייַטער תּלמיד, מיר וועט דאַרפֿן צו צייכענען און פּאַפּ די קאָד פֿאַר יד0 און פאַרבייַטן אַלע פֿאַלן פון יד0 מיט יד1 און אַזוי אויף פֿאַר יד2, 3, און 4. ווי באַלד ווי איר הערן אַז מיר דאַרפֿן צו צייכענען און פּאַפּ, איר זאָל אָנהייבן טראכטן אַז עס איז אַ בעסער לייזונג. איצט וואָס אויב איר פאַרשטיין איר טאָן ניט דאַרפֿן 5 תּלמיד ידס אָבער אלא 7? איר דאַרפֿן צו גיין צוריק אין דיין מקור קאָד און לייגן אין אַ יד5, אַ יד6, און קאָפּי און פּאַפּ די לאָגיק פֿאַר קאָנטראָלירונג אויב די ידס געהערן צו די קלאַס פֿאַר די 2 נייַ ידס. עס איז גאָרנישט קאַנעקטינג אַלע די ידס צוזאַמען, און אַזוי עס איז קיין וועג פון אַסקינג די פּראָגראַם צו טאָן דעם פֿאַר ידס 0 דורך 6. געזונט איצט איר פאַרשטיין איר האָבן 100 תּלמיד ידס. עס ס סטאַרטינג צו ויסקומען ווייניקער ווי ידעאַל צו דאַרפֿן צו סעפּעראַטלי דערקלערן יעדער פון די ידס, און קאָפּי און פּאַפּ קיין לאָגיק פֿאַר יענע נייַ ידס. אבער אפֿשר מיר זענען באשלאסן, און מיר טאָן עס פֿאַר אַלע 100 סטודענטן. אבער וואָס אויב איר טאָן ניט וויסן ווי פילע סטודענטן עס פאקטיש זענען? עס זענען נאָר עטלעכע N סטודענטן און דיין פּראָגראַם האט צו פרעגן די באַניצער וואָס אַז N איז. אַ אָה. דאס איז נישט געגאנגען צו אַרבעט זייער גוט. דיין פּראָגראַם בלויז אַרבעט פֿאַר עטלעכע קעסיידערדיק נומער פון סטודענטן. סאַלווינג אַלע פון ​​די פראבלעמען איז די שיינקייט פון ערייז. אַזוי וואָס איז אַ מענגע? אין עטלעכע פּראָגראַממינג שפּראַכן אַ מענגע טיפּ זאל זייַן ביכולת צו טאָן אַ ביסל מער, אָבער דאָ מיר וועט פאָקוס אויף די גרונט מענגע דאַטן סטרוקטור פּונקט ווי איר וועט זען עס אין סי אַ מענגע איז נאָר אַ גרויס בלאָק פון זכּרון. אַז ס עס. ווען מיר זאָגן מיר האָבן אַ מענגע פון ​​10 ינטאַדזשערז, אַז נאָר מיטל מיר האָבן עטלעכע פאַרשפּאַרן פון זכּרון וואָס איז גרויס גענוג צו האַלטן 10 באַזונדער ינטאַדזשערז. אַסומינג אַז אַ ינטעגער איז 4 ביטעס, דעם מיטל וואָס אַ מענגע פון ​​10 ינטאַדזשערז איז אַ קעסיידערדיק בלאָק פון 40 ביטעס אין זכּרון. אפילו ווען איר נוצן מולטידימענסיאָנאַל ערייז, וואָס מיר וועלן ניט גיין אין צו דאָ, עס ס נאָך נאָר אַ גרויס בלאָק פון זכּרון. די מולטידימענסיאָנאַל נאָוטיישאַן איז נאָר אַ קאַנוויניאַנס. אויב איר האָבן אַ 3 דורך 3 מולטידימענסיאָנאַל מענגע פון ​​ינטאַדזשערז, דעמאָלט דיין פּראָגראַם וועט טאַקע נאָר מייַכל דעם ווי אַ גרויס בלאָק פון 36 ביטעס. די גאַנץ נומער פון ינטאַדזשערז איז 3 מאל 3, און יעדער ינטעגער נעמט אַרויף 4 ביטעס. זאל ס נעמען אַ קוק בייַ אַ גרונט בייַשפּיל. מיר קענען זען דאָ 2 פאַרשידענע וועגן פון דיקלערינג ערייז. מיר וועט האָבן צו באַמערקונג 1 פון זיי אויס פֿאַר די פּראָגראַם צו צונויפנעמען זינט מיר דערקלערן X צוויי מאָל. מיר וועט נעמען אַ קוק בייַ עטלעכע פון ​​די דיפעראַנסיז צווישן די 2 טייפּס פון דעקלעריישאַנז אין אַ ביסל. ביידע פון ​​די שורות דערקלערן אַ מענגע פון ​​גרייס ען, ווו מיר האָבן # דעפינירן ען ווי 10. מיר קען נאָר ווי לייכט האָבן געבעטן די באַניצער פֿאַר אַ positive ינטעגער און געוויינט אַז ינטעגער ווי אַ נומער פון עלעמענטן אין אונדזער מענגע. ווי אונדזער תּלמיד שייַן בייַשפּיל פאר, דאָס איז מין פון ווי דיקלערינג 10 גאָר באַזונדער ויסגעטראַכט וועריאַבאַלז; קס0, קס 1, קס 2, און אַזוי אויף אַרויף צו קסן-1. יגנאָרינג די שורות ווו מיר דערקלערן דעם מענגע, באַמערקן די קוואַדראַט בראַקאַץ בעשאָלעם ין די פֿאַר לופּס. ווען מיר שרייַבן עפּעס ווי X [3], וואָס איך וועט נאָר לייענען ווי X קאַנטיקער 3, איר קענען טראַכטן פון אים ווי אַסקינג פֿאַר די ויסגעטראַכט קס 3. נאָטיץ ווי מיט אַ מענגע פון ​​גרייס ען, דעם מיטל אַז די נומער ין פון די בראַקאַץ, וואָס מיר וועט רופן דער אינדעקס, קען זייַן עפּעס פון 0 צו N-1, וואָס איז אַ גאַנץ פון ען ינדיסעס. צו טראַכטן וועגן ווי דעם פאקטיש אַרבעט געדענקען אַז די מענגע איז אַ גרויס בלאָק פון זכּרון. אַסומינג אַז אַ ינטעגער איז 4 ביטעס, די גאנצע מענגע X איז אַ 40 ביטע בלאָק פון זכּרון. אַזוי קס0 רעפערס צו די זייער ערשטער 4 ביטעס פון דעם בלאָק. רענטגענ [1] רעפערס צו דער ווייַטער 4 ביטעס און אַזוי אויף. דאס מיטל אַז די אָנהייב פון X איז אַלע דער פּראָגראַם אלץ דאַרף צו האַלטן שפּור פון. אויב איר ווילן צו נוצן X [400], דעריבער די פּראָגראַם ווייסט אַז דאָס איז עקוויוואַלענט צו נאָר 1600 ביטעס נאָך די אָנהייב פון X. ווערד מיר באַקומען 1600 ביטעס פון? עס ס נאָר 400 מאל 4 ביטעס פּער ינטעגער. איידער מאָווינג אויף, עס ס זייער וויכטיק צו פאַרשטיין אַז אין C עס איז קיין ענפאָרסמאַנט פון די אינדעקס אַז מיר נוצן אין די מענגע. אונדזער גרויס בלאָק איז בלויז 10 ינטאַדזשערז לאַנג, אָבער גאָרנישט וועט שרייַען בייַ אונדז אויב מיר שרייַבן X [20] אָדער אַפֿילו X [-5]. די אינדעקס טוט נישט אַפֿילו האָבן צו זייַן אַ נומער. עס קענען זייַן קיין אַרביטראַריש אויסדרוק. אין דער פּראָגראַם מיר נוצן די בייַטעוודיק איך פון די פֿאַר שלייף צו אינדעקס אין די מענגע. דאס איז אַ זייער פּראָסט מוסטער, לופּינג פון איך = 0 צו די לענג פון די מענגע, און דעמאָלט ניצן איך ווי דער אינדעקס פֿאַר די מענגע. אין דעם וועג איר יפעקטיוולי שלייף איבער די גאנצע מענגע, און איר קענען אָדער באַשטימען צו יעדער אָרט אין די מענגע אָדער נוצן עס פֿאַר עטלעכע כעזשבן. אין דער ערשטער פֿאַר שלייף, איך סטאַרץ בייַ 0, און אַזוי עס וועט באַשטימען צו דעם 0 אָרט אין די מענגע, דער ווערט 0 מאל 2. דעמאָלט איך ינגקראַמאַנץ, און מיר באַשטימען די ערשטער אָרט אין די מענגע די ווערט 1 מאל 2. דעמאָלט איך ינגקראַמאַנץ ווידער און אַזוי אויף אַרויף ביז מיר באַשטימען צו שטעלע ען-1 אין די מענגע די ווערט ען-1 מאל 2. אַזוי מיר ווע באשאפן אַ מענגע מיט דעם ערשטער 10 אַפֿילו נומערן. אפֿשר יוואַנז וואָלט האָבן שוין אַ ביסל בעסער נאָמען פֿאַר די בייַטעוודיק ווי X, אָבער וואָס וואָלט האָבן געגעבן דאס אַוועק. די רגע פֿאַר שלייף דעמאָלט נאָר פּרינץ די וואַלועס אַז מיר האָבן שוין סטאָרד ין פון די מענגע. זאל ס פּרובירן פליסנדיק די פּראָגראַם מיט ביידע טייפּס פון מענגע דעקלעריישאַנז און נעמען אַ קוק אין דער רעזולטאַט פון דעם פּראָגראַם. ווי ווייַט ווי מיר קענען זען, די פּראָגראַם ביכייווז די זעלבע וועג פֿאַר ביידע טייפּס פון דעקלעריישאַנז. זאל ס אויך נעמען אַ קוק אין וואָס כאַפּאַנז אויב מיר טוישן די ערשטער שלייף צו נישט האַלטן בייַ ען אָבער אלא זאָגן 10,000. וועג ווייַטער פון די סוף פון די מענגע. אָאָפּס. אפֿשר איר ווע געזען דעם פריער. א סעגמאַנטיישאַן שולד מיטל דיין פּראָגראַם האט קראַשט. איר אָנהייב געזען די ווען איר פאַרבינדן געביטן פון זכּרון איר זאָל נישט זייַן רירנדיק. דאָ מיר זענען רירנדיק 10,000 ערטער ווייַטער פון די אָנהייב פון X, וואָס עווידענטלי איז אַ אָרט אין זכּרון מיר זאָל ניט זייַן רירנדיק. אַזוי רובֿ פון אונדז מיסטאָמע וואָלט נישט אַקסאַדענאַלי שטעלן 10,000 אַנשטאָט פון ען, אָבער וואָס אויב מיר טאָן עפּעס מער סאַטאַל ווי זאָגן שרייַבן ווייניקער ווי אָדער גלייַך צו ען אין די פֿאַר שלייף צושטאַנד ווי קעגן צו ווייניקער ווי ען געדענקען אַז אַ מענגע נאָר האט ינדיסעס פון 0 צו N-1, וואָס מיטל וואָס אינדעקס ען איז ווייַטער פון די סוף פון די מענגע. די פּראָגראַם זאל נישט קראַך אין דעם פאַל, אָבער עס ס נאָך אַ טעות. אין פאַקט, דעם טעות איז אַזוי פּראָסט, אז עס האט עס ס אייגן נאָמען, אַן אַוועק דורך 1 טעות. אַז ס עס פֿאַר די באַסיקס. אַזוי וואָס זענען די הויפּט דיפעראַנסיז צווישן די 2 טייפּס פון מענגע דעקלעריישאַנז? איין חילוק איז ווו די גרויס בלאָק פון זכּרון גייט. אין דער ערשטער דערקלערונג, וואָס איך וועט רופן דער קאַנטיקער-מענגע טיפּ, כאָטש דאָס איז דורך קיין מיטל אַ קאַנווענשאַנאַל נאָמען, עס וועט גיין אויף די אָנלייגן. וועראַז אין די רגע, וואָס איך וועט רופן די טייַטל-מענגע טיפּ, עס וועט גיין אויף די קופּע. דאס מיטל אַז ווען די פֿונקציע קערט, דער קאַנטיקער מענגע וועט אויטאָמאַטיש זייַן דעאַללאָקאַטעד, וועראַז ווי איר מוזן עקספּליסיטילי רופן פֿרייַ אויף די טייַטל מענגע אָדער אַנדערש איר האָבן אַ זכּרון רינען. אַדדיטיאָנאַללי, דער קאַנטיקער מענגע איז נישט פאקטיש אַ בייַטעוודיק. דאס איז וויכטיק. עס ס נאָר אַ סימבאָל. איר קענען טראַכטן פון אים ווי אַ קעסיידערדיק אַז דער קאַמפּיילער טשוזאַז פֿאַר איר. דאס מיטל אַז מיר קענען נישט טאָן עפּעס ווי X + + מיט דער קאַנטיקער טיפּ, כאָטש דאָס איז בישליימעס גילטיק מיט די טייַטל טיפּ. די טייַטל טיפּ איז אַ בייַטעוודיק. פֿאַר די טייַטל טיפּ, מיר האָבן 2 באַזונדער בלאַקס פון זכּרון. די בייַטעוודיק X זיך איז סטאָרד אין דעם אָנלייגן און איז נאָר אַ איין טייַטל, אָבער די גרויס בלאָק פון זכּרון איז סטאָרד אויף די קופּע. די בייַטעוודיק X אויף דעם אָנלייגן נאָר סטאָרז די אַדרעס פון די גרויס בלאָק פון זכּרון אויף די קופּע. איינער ימפּלאַקיישאַן פון דעם איז מיט די גרייס פון אָפּעראַטאָר. אויב איר פרעגן פֿאַר די גרייס פון דער קאַנטיקער מענגע, עס וועט געבן איר די גרייס פון דעם גרויס בלאָק פון זכּרון, עפּעס ווי 40 ביטעס, אָבער אויב איר פרעגן פֿאַר די גרייס פון דעם טייַטל טיפּ פון מענגע, עס וועט געבן איר די גרייס פון דעם בייַטעוודיק X זיך, וואָס אויף די אַפּפּליאַנסע איז מסתּמא פּונקט 4 ביטעס. ניצן די טייַטל-מענגע טיפּ, עס איז אוממעגלעך צו גלייַך פרעגן פֿאַר די גרייס פון דעם גרויס בלאָק פון זכּרון. דאס איז נישט יוזשאַוואַלי פיל פון אַ ריסטריקשאַן זינט מיר זייער ראַרעלי ווילן די גרייס פון די גרויס בלאָק פון זכּרון, און מיר קענען יוזשאַוואַלי רעכענען עס אויב מיר דאַרפֿן עס. צום סוף, דער קאַנטיקער מענגע כאַפּאַנז צו צושטעלן אונדז מיט אַ דורכוועג פֿאַר יניטיאַליזינג אַ מענגע. זאל ס זען ווי מיר קען שרייַבן די ערשטער 10 אַפֿילו ינטאַדזשערז ניצן די דורכוועג יניטיליזאַטיאָן. מיט די טייַטל מענגע, עס איז נישט אַ וועג צו טאָן אַ דורכוועג ווי דעם. דאס איז נאָר אַן הקדמה צו וואָס איר קענען טאָן מיט ערייז. זיי ווייַזן זיך אין כּמעט יעדער פּראָגראַם איר שרייַבן. אַלעווייַ איר קענען איצט זען אַ בעסער וועג פון טאן דעם תּלמיד ידס בייַשפּיל פון די אָנהייב פון די ווידעא. מייַן נאָמען איז ראָב באָוודען, און דאָס איז קס50.