Menu
Coddy logo textTech

מצביעים ומערכים

שיעור 6 מתוך 14 בקורס מצביעים ב-C++ של Coddy.

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

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

אם יש לנו int list[10];, כאן list הוא למעשה int * const, ול-list יש למעשה אותו ערך כמו ל-&list[0]


int list[] = {10, 20, 30, 40, 50};
cout << "First: " << *list << endl;
cout << "Third: " << *(list + 2) << endl;
int *ptr = list;
cout << "First again: " << *ptr;
Output:
First: 10
Third: 30
First again: 10

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


int list[] = {10, 20, 30, 40, 50};
int *ptr = list;
for(int i = 0; i < 5; i++)
    cout << *ptr++ << " ";
Output:
10 20 30 40 50

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

challenge icon

אתגר

קל

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

נסו בעצמכם

#include <iostream>

using namespace std;

int main() {
    // אין לשנות את הקוד שלהלן
    int n, x;
    cin >> n;
    int numbers[n];
    for(int i = 0; i < n; i++)
        cin >> numbers[i];
    // אין לשנות את הקוד שלעיל

    // כתבו כאן את הקוד שלכם

    return 0;
}

כל השיעורים ביחידה מצביעים ב-C++

תרגלו בעצמכם: קומפיילר C++ אונליין