ההבדל בין מערך ומצביע

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 1 אַפּרִיל 2021
תאריך עדכון: 6 מאי 2024
Anonim
שיעור 4   פרק השיטה   מערך המחקר
וִידֵאוֹ: שיעור 4 פרק השיטה מערך המחקר

תוֹכֶן


יש קשר הדוק בין מערך ומצביע. ניתן להשתמש ב מצביע כדי לגשת אל רכיבי המערך, גישה למערך כולו באמצעות חשבון מצביע, הופכת את הגישה למהירה יותר. יש הבדל בסיסי בין מצביע למערך כלומר מערך הוא אוסף של משתנים מסוג נתונים דומה ואילו המצביע הוא משתנה המאחסן את הכתובת של משתנה אחר. ישנם כמה הבדלים אחרים בין מערך ומצביע אשר נדונים בהמשך בתרשים ההשוואה.

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה

בסיס להשוואהמערךמצביע
הצהרה// ב- C ++
סוג var_name;
// בג'אווה.
סוג var-name;
var_name = סוג חדש;
// ב- C ++
סוג * var_name;
עובדשומר את הערך של המשתנה של סוג נתונים הומוגני.שמור את הכתובת של המשתנה האחר מאותו סוג תאריך כמו משתנה המצביע.
דורניתן ליצור מערך של מצביעים.ניתן ליצור מחוון למערך.
תמיכה ב- Javaתמכו במושג המערך.לא תומך במצבים.
אחסוןמערך רגיל מאחסן ערכים של משתנה ומערך המצביע שומר את כתובת המשתנים.מצביעים תוכננו במיוחד לאחסון כתובת המשתנים.
קיבולתמערך יכול לאחסן את מספר האלמנטים המוזכרים בגודל משתנה המערך. משתנה מצביע יכול לאחסן את הכתובת של משתנה אחד בלבד בכל פעם.


הגדרת מערך

מערך הוא אוסף האלמנטים מאותו סוג תאריך, וכל המרכיבים הללו מופנים בשם משותף, שהוא שם של משתנה מערך. ניתן לגשת לאלמנט מערך מסוים על ידי גישה לאינדקס הספציפי של מערך זה בו הוא מאוחסן. מערכים יכולים להיות מערך חד ממדי, מערך דו ממדי או מערך רב ממדי. ניתן ליצור מערך של מצביעים, כלומר מערך המכיל את כל המשתנים כמשתנה מצביע. ב- 'C ++' המערכים מוקצים באופן סטטי ואילו ב- 'Java' המערכים מוקצים באופן דינמי.

// ב C ++ סוג var_name; // בג'אווה. סוג var-name; var_name = סוג חדש;

כאן 'סוג' מציין את סוג הנתונים של משתנה מערך, 'var_name' מציין את השם שניתן למשתנה המערך, 'גודל' מציין את הקיבולת של משתנה מערך כלומר כמה אלמנטים מסוג 'ניתן לאחסן במשתנה המערך הזה. . ישנן שתי שיטות לגישה למערך, ראשית 'חשבון מצביע' ושנייה 'אינדקס מערך', מהן 'חשבון מצביע' מהיר יותר.

// גישה באמצעות מצביע אריתמטרי Void display_array (int * S) {while (* s) {cout (<< "הערך הוא" << * s); * s ++; }}

השימוש ב"חשבון מצביע "יעבוד מהר יותר בהשוואה ל"אינדקס מערך", כלומר גישה למשתנה של מערך באמצעות האינדקס שלו. אם אתה צריך להעביר מערך של מצביעים לפונקציה, ניתן לעשות זאת באמצעות אותה שיטה בה אתה משתמש כדי להעביר מערך רגיל, כלומר ישירות לקרוא לפונקציה עם שם המערך, ללא אינדקס כלשהו.


הבה נבין זאת בעזרת הדוגמא

// הצהרת מערך המצביעים. int * p;

כאן זה מראה ש- p הוא מערך מסוג מספר שלם, הוא יחזיק את הכתובת של 10 משתנים מסוג שלם שלם. בואו נעביר את מערך המצביע לעיל לתצוגת פונקציה ().

תצוגה (p); // התקשר לתצוגת הפונקציה. תצוגה בטלה (int * d) {// פונקציה המחזרת את מערך המצביע. עבור (int i = 0; i <10; i ++) {cout << ("אינדקס" <

פונקציה זו תציג את הערכים, המופיעים במשתנים, שכתובותיהם מאוחסנות ברצף מצביע זה ברצף.

הגדרת פוינטר

המצביע הוא משתנה המחזיק את כתובת הזיכרון של משתנה אחר. תאריך הנתונים של שניהם, משתנה המצביע והמשתנה שכתובתו מוקצה למשתנה מצביע, חייבים להיות זהים. משתנה המצביע מוגדר כמפורט.

// הצהרה בשם C ++ *;

כאן, 'סוג' הוא סוג של תאריך, 'שם' הוא שם משתנה המצביע. ה"סוג "מגדיר את סוג הכתובת של המשתנה שניתן לאחסן במשתנה המצביע. לדוגמה, מצביע המספר השמור יאחסן את הכתובת של משתנה שלם. ישנם שני מפעילי מצביעים '*' ו- '&'. המפעיל '*' מחזיר את הערך הממוקם בכתובת, המאוחסן במשתנה ואחריו הסימן '*'. המפעיל '&' מחזיר את הכתובת של המשתנה ואחריו הסימן '&'.

// למשל int b = 10 int a = & b; // כאן נשמרת הכתובת של b במשתנה a. // מאפשרת לכתובת של b היא 2000, אז עכשיו = 2000. int c = * a; // כאן, משתנה מצביע המספר השלם * a יחזיר את הערך שנמצא בכתובת המאוחסנת ב- .ie. c = 10.

ישנם רק שני מפעילי חשבון שאתה יכול להשתמש בהם על מצביעים, כלומר הוספה וחיסור. אם אתה מוסיף תוספת על משתנה מצביע שלם, זה יגדל בגודל של סוג הנתונים, כלומר על ידי 2 בתים, שכן הוא מצביע שלם, על התוספת יהיה עליו להצביע על משתנה מספר שלם הבא. כך גם בירידה.

// p הוא מצביע מספר שלם המכיל ערך 2000. p ++; // עכשיו p = 2002. p--; // עכשיו p שוב מכיל 2000 כפי שמסומן על ידי שני בתים.

  1. מערך מאחסן את המשתנים של סוגי נתונים דומים וסוגי הנתונים של המשתנים חייבים להתאים לסוג המערך. מצד שני, משתנה המצביע מאחסן את הכתובת של משתנה, מסוג הדומה לסוג של משתנה המצביע.
  2. אנו יכולים ליצור מערך של מצביעים, כלומר מערך שהמשתנים שלו הם משתני המצביע. מצד שני, אנו יכולים ליצור מצביע שמצביע על מערך.
  3. Java תומכת במערך, אך היא אינה תומכת במצבים.
  4. גודל מערך מחליט את מספר המשתנים שהוא יכול לאחסן בעוד; משתנה מצביע יכול לאחסן את הכתובת של המשתנה בלבד

פתק:

ג'אווה אינה תומכת במודעות או נמנעת ממנה בקפדנות.

סיכום:

כאשר עלינו לעבוד על אלמנטים של נתונים מסוג נתונים דומה אז, במקום לעבוד בנפרד על משתנים, אנו יכולים ליצור מערך של אותם משתנים מסוגי נתונים דומים ואז לפעול עליהם. מצביעים נחוצים לתוכנית כלשהי, זה נותן כוח אדיר, אך למרבה הצער, אם המצביע מכיל ערך שגוי, זה יהיה הבאג הקשה ביותר למצוא.