חשבון אריתמטי - פעולות
שיעור 4 מתוך 14 בקורס מצביעים ב-C++ של Coddy.
++ / --
הגדלה או הקטנה של מצביע מעבירה אותו למיקום הזיכרון הבא או הקודם מאותו סוג נתונים. זה שימושי מאוד כשיש לנו מערך ואנחנו מגדירים את המצביע כך שיצביע על האיבר הראשון; עם כל הגדלה אנחנו עוברים איבר אחד ימינה
int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
cout << *ptr << " ";
ptr++;
cout << *ptr << " ";
ptr--;
cout << *ptr;Output:
1 2 1כפי שאפשר לראות, כשאנחנו מגדילים או מקטינים את המצביע, אנחנו עוברים למיקום הזיכרון הבא מאותו סוג, ובמקרה הזה לאיבר הבא או הקודם במערך
+= / -=
הוספה או חיסור של מספר גדול מ־1 יכולים לעזור לנו להתקדם מהר יותר ולעבור על יותר איברים בכל פעם
int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
cout << *ptr << " ";
ptr += 4;
cout << *ptr << " ";
ptr -= 2;
cout << *ptr;Output:
1 5 3n = p2 - p1
הפעולה השימושית האחרונה שאפשר לבצע עם מצביעים היא לחשב כמה איברים יש ביניהם. אפשר לעשות זאת באמצעות חישוב ההפרש ביניהם
int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
int *ptr2 = &list[4];
cout << "Between " << *ptr << " and " << *ptr2
<< " there's " << ptr2-ptr << " elements";Output:
Between 1 and 5 there's 4 elementsאפשר להשתמש בשלוש הטכניקות האלה כדי לבצע פעולות שימושיות רבות עם מצביעים ולפתור בעיות במשימות השוטפות שלנו
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
אתגר
קלבהינתן מערך המספרים השלמים הבא:
int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80};- צור מצביע
ptr1שמצביע על האיבר הראשון במערך. - צור מצביע
ptr2והקצה לו את הערך שלptr - קדם את
ptr2כדי לעבור לאיבר הרביעי - צור את
ptr3ותן לו את הערך שלptr2 - הפחת 2 מיקומים מהמצביע
ptr3 - חשב והדפס את מספר האיברים בין האיבר הראשון והאחרון במערך באמצעות חיסור מצביעים, באופן הבא:
There are {elements} elements between {first} and {last}
נסו בעצמכם
#include <iostream>
using namespace std;
int main() {
int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80};
// הזינו קוד עבור ptr1
// הזינו קוד עבור ptr2
// הזינו קוד עבור ptr3
// הדפיסו את ההודעה הרצויה
// אין לשנות דבר מתחת לשורה זו
// ---------------------------------
cout << "*ptr1 -> " << *ptr1 << endl;
cout << "*ptr2 -> " << *ptr2 << endl;
cout << "*ptr3 -> " << *ptr3 << endl;
return 0;
}כל השיעורים ביחידה מצביעים ב-C++
1יסודות המצביעים
מבוא למצביעיםהצהרה ואתחולחשבון אריתמטי - השמהחשבון אריתמטי - פעולותמצביעי constמצביעים ומערכיםתרגלו בעצמכם: קומפיילר C++ אונליין