קליטת מערך\מטריצה בפונקציה. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

קליטת מערך\מטריצה בפונקציה.


SpiritKnight

Recommended Posts

היי,

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

#include <Stdio.h>
#define n 4

int func()
{
int i,b[n];
for(i=0;i<n;i++)
{
printf("enter a value/n");
scanf("%d",&b[i]);
}
return (b);
}


void main ();
{
int a[n];
a=func;
for(i=0;i<n;i++)
printf("%d",a[i]);
}

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

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

העברת משתנים ישירות זה BY VALUE, והעברת מצביע אליהם, כדי שתוכל לשנות אותם בתוכה, זה BY REFERENCE.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...