דף
הבית>>פרק 6>>מצביעים
ומערכים>>פונקציות ומצביעים |
פונקציות ומצביעים:
עד כה השתמשנו בפונקציות המקבלות או מחזירות ערכים כמו
תוצאת כפל, חילוק . כעת ניווכח כי אחד השימושים הנפוצים ביותר של מצביעים
הוא בפרמטרים של פונקציות. נשאלת השאלה למה? ובכן המצביעים עוזרים לנו לבצע
פעולות שלא יכולנו לבצע בלעדיהם. לדוגמה - אם אנו קוראים לפונקציה עם שני
משתנים, ומבצעים על המשתנים בפונקציה פעולות אזי ערכיהם ישתנו אך ורק בתוך
הפונקציה ולא מחוץ לה. לכן כדי לשנות את ערך המשתנים גם בפונקציה main נשתמש
ב מצביעים. לדוגמה:
|
#include <iostream.h>
#include <conio.h>
void swap (int a, int b);
void swap (int a, int b)
{
int c;
cout<<"a="<<a<<"b="<<b<<'\n';
c=a;
a=b;
b=c;
cout<<"a="<<a<<"b="<<b<<'\n';
}
main()
{
int x=5, y=6;
swap(x,y);
cout<<"x="<<x<<"y="<<y<<'\n';
getch();
return 0;
}
|
פלט התוכנית:
a=5 b=6
a=6 b=5
x=5 y=6
|
כפי שניתן לראות ערך המשתנים x וy לא השתנה כיוון שהפונקציה
swap עובדת על הערכים המועתקים ולא על המקוריים. כיצד אם כך נפתור את הבעיה?
נשתמש במצביעים. לדוגמה:
|
#include <iostream.h>
#include <conio.h>
void swap (int *a, int *b);
void swap (int *a, int *b)
{
int c;
cout<<"*a="<<*a<<"*b="<<*b<<'\n';
c = *a;
*a = *b;
*b = c;
cout<<"*a="<<*a<<"*b="<<*b<<'\n';
}
main()
{
int x=5, y=6;
swap(&x,&y);
cout<<"x="<<x<<"y="<<y<<'\n';
getch();
return 0;
}
|
פלט התוכנית:
*a=5 *b=6
*a=6 *b=5
x=6 y=5
|
בדוגמה זו קיבלנו את השינוי בערך המשתנים המקוריים.
|
|