++C למתחילים
 
דף הבית>>פרק 6>>מצביעים ומערכים

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

קיים קשר הדוק בין מצביעים ומערכים, זאת כיוון שלרוב נהוג לעבוד על מערכים דרך מחוונים ולא דרך האינדקסים. שם המערך הוא בעצם מצביע לעבר האיבר הראשון במערך. כלומר אם נגדיר [int arr[4 אזי arr הוא מצביע לעבר האיבר הראשון כלומר [arr[0 לכן קיימת אפשרות לבצע השמה של שם המערך למצביע. לדוגמה:  

#include <iostream.h> 
#include <conio.h> 

main() 
{ 
   int arr[5] = {2, 4, 6, 8, 10} ,arr2[5] ,*p1 ,*p2 ,i; 
   p1 = arr; 
   p2 = arr2; 
   for(i=0;i<5 ;i++, p1++, p2++) 
      *p2 = *p1; 
         for(i=0;i<5;i++) 
          cout<<"arr2["<<i<<']'<<'='<<arr2[i]<<' '; 
          getch(); 
          return 0; 
} 
 

פלט התוכנית:

arr2[0]=2 arr2[1]=4 arr2[2]=6 arr2[3]=8 arr2[4]=10  

הסבר התוכנית: הגדרנו תחילה שני מערכים, שני מצביעים p1 ו p2 ואינדקס i. לאחר מכן ביצענו השמה של שמות המערכים למצביעים.

מערכים של מצביעים:

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

;[int *ptr[5  

דוגמה לתוכנית המשתמשת במערך של מצביעים:  

#include <iostream.h> 
#include <conio.h> 

main() 
{ 
   int i; 
   int x=2, y=4, t=6, z=8; 
   int *ptr[4]; 
   ptr[0]=&x; ptr[1]=&y; ptr[2]=&t; ptr[3]=&z; 
    for(i=0;i<4;i++) 
     cout<<"ptr["<<i<<"]="<<*ptr[i]<<' '; 
     getch(); 
     return 0; 
}  
 
הקודם הבא