c programming tutorial - בקלות C++
מדריכי תכנות

שיעור 7: מבנים

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

התבנית להצהרה על מבנה (ב ++C, זה שונה ב C) הוא:

struct NAME
{
  VARIABLES;
};

כאשר NAME הוא השם לכל טיפוס המבנה. כדי ליצור ממש מבנה בודד התחביר הוא

NAME שם_המבנה_הבודד;

גישה למשתנה מהמבנה נעשית כך

שם_המשתנה.שם_המבנה_הבודד;

לדוגמא:

struct example
{
  int x;
};

example an_example;  //Treating it like a normal variable type
an_example.x=33;     //How to access it

הנה תוכנית לדוגמא:

struct database
{
  int id_number;
  int age;
  float salary;
};

int main()
{
  database employee;  //There is now an employee variable that has  
			    //modifiable variables inside it.
  employee.age=22;
  employee.id_number=1;
  employee.salary=12000.21;
  return 0;

}

מסד הנתונים struct מצהיר שלמסד הנתונים יש שלושה משתנים בתוכו, גיל, מספר ת.ז., ומשכורת.

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

strucut database fn();

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

אופרטור ה '.' משמש לגישה למשתנים שונים בתוך האיחוד גם כן.

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

דוגמא מהירה:

#include <iostream.h>
struct xampl
{
  int x;
};



int main()

{  
  xampl structure;
  xampl *ptr;
  structure.x=12;
  ptr=&structure; //Yes, you need the & when dealing with structures
	     //and using pointers to them
  cout<<ptr->x;  //The -> acts somewhat like the * when used with pointers
			//It says, get whatever is at that memory address
			//Not "get what that memory address is"
  return 0;
}



לדף הראשון

<< לדף הקודם

לדף הבא >>