פורסם 2006 באפריל 3019 שנים היי,השאלה מעט בסיסית אבל אני לא מצליח משום מה. ניסיתי מספר רעיונות וזאת הגרסא שנראית לי הכי נכונה לוגית(למרות שהיא עדיין לא עובדת). מה הבעיה בגרסא שלי, ואיך בעצם קולטים? אם מישהו יוכל לצרף את הפונקציה המלאה ואת הזימון אני אודה מאוד.#include <Stdio.h>#define n 4int 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]);}
פורסם 2006 באפריל 3019 שנים הפונקציה שלך מחזיר int, למה אתה מנסה להחזיר בה מערך? ועוד כזה שמוגדר על ה- stack?עדיף שהפונקציה תקבל בתור פרמטר מצביע/reference למערך ותמלא אותו.
פורסם 2006 באפריל 3019 שנים מחבר איך אני עושה את מה שאמרת(בהנחה שזה בחומר של י"א- 2 יח"ל לימוד ראשונות)?
פורסם 2006 באפריל 3019 שנים אתה מקבל בפונקציה שלך מצביע ל-INT ואת הגודל של המערך. אתה מכריז על מערך בתוכנית הראשית ומעביר את הכתובת שלו לפונקציה, ביחד עם הגודל שלו. ו... זהו בערך.
פורסם 2006 באפריל 3019 שנים void func(int *array, int size){ int i; for(i=0;i<size;i++) { printf("enter value number %d:", i); scanf("%d",&array[i]); printf("\n"); }}#define SIZE 5int main(void){ int a[SIZE], i; func(a, SIZE); for (i = 0; i < SIZE; i++) printf("%d\n", a[i]);}
פורסם 2006 באפריל 3019 שנים מחבר היי, תודה רבה על הקוד. הדבר היחיד שלא ברור לי הוא למה יש כוכבית (*array) ומה היא עושה, מכיוון שכאשר אני מסיר אותה התוכנית לא עובדת.
פורסם 2006 באפריל 3019 שנים הגיוני שזה לא יעבוד, זה לא בשביל היופי... תקרא על העברת פרמרטים BY VALUE ו BY REFERENCE
פורסם 2006 באפריל 3019 שנים טוב, ממש על הדרך (בטח יגיע מישהו ויפרט), כאשר אתה מעביר פרמרטים לפונקציה ב C, הוא יוצר עותק לוקלי שלהם בזמן החיים של הפונקציה, וכל השינויים שאתה עושה בתוכה, הם על המשתנים האלו (ההעתק) ולא המקוריים. ואז, כאשר הפונקציה תסתיים, כל המשתנים שהעברת אליה, לא השתנו. אבל לפעמים, רוצים לשנות את הערך של המשתנים האלו בתוך הפונקציה (כמו פה, כאשר אנו רוצים לשנות את המערך לדוגמא), אז מה עושים ? מעבירים מצביע למשתנים, ולא את עצמם. את ערך המצביע גם לא משנים, אבל לא צריך, כי אפשר בתוך הפונקציה, לראות על מה הוא מצביע (כתובת בזכרון בסה"כ), ולשנות אותה.העברת משתנים ישירות זה BY VALUE, והעברת מצביע אליהם, כדי שתוכל לשנות אותם בתוכה, זה BY REFERENCE.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.