נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: איך אני מקבל מערך מפונקציה ?

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
danny
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 December 2005 בשעה 20:54 | IP רשוּם
ציטוט danny

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

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 24 December 2005 בשעה 20:57 | IP רשוּם
ציטוט ניר

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


__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
danny
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 December 2005 בשעה 21:04 | IP רשוּם
ציטוט danny

אפשר דוגמא?
חזרה לתחילת העמוד הצג את כרטיס החבר של danny חפש הודעות אחרות של danny בקר בדף הבית של danny
 
danny
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 December 2005 בשעה 21:11 | IP רשוּם
ציטוט danny

ככה אני מגדיר:
char *buf = new char [128];
למשל שאני מנסה לקרוא לפונקציה ככה
function(&buf)
והפונקציה ככה
char function(char *buf)
כשאני עושה ככה זה קורס לי..
חזרה לתחילת העמוד הצג את כרטיס החבר של danny חפש הודעות אחרות של danny בקר בדף הבית של danny
 
pitbull
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 24 December 2005 בשעה 21:20 | IP רשוּם
ציטוט pitbull

לא ככה, למדת פוינטרים?
אם לא אז פשוט  תגדיר מערך כרגיל, ככה
קוד:

char buf[128];

בקריאה לפונקצייה תכתוב
קוד:

function_name(buf, size);

size הוא גודל המערך.
ובכותרת הפונקצייה עצמה תכתוב כך:
קוד:

void function_name(char buf[], int size);

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 December 2005 בשעה 21:22 | IP רשוּם
ציטוט danny

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 December 2005 בשעה 21:34 | IP רשוּם
ציטוט danny

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

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 24 December 2005 בשעה 21:37 | IP רשוּם
ציטוט pitbull

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 December 2005 בשעה 21:39 | IP רשוּם
ציטוט danny

אבל מה שהגדרתי זה היה פוינטר לא מערך.. תגיד אתה יודע בכלל על מה אתה מדבר :/
עובדה שunderwarrior הבין טוב מאוד אז עזוב את הטופיק ונחכה למישהו רציני
חזרה לתחילת העמוד הצג את כרטיס החבר של danny חפש הודעות אחרות של danny בקר בדף הבית של danny
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 24 December 2005 בשעה 21:44 | IP רשוּם
ציטוט ניר

נסו לדבר כמו בני אדם. danny - מה בדיוק אתה צריך? הפתרון של pitbull נראה מאוד הגיוני

__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
danny
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 December 2005 בשעה 21:44 | IP רשוּם
ציטוט danny

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

הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 24 December 2005 בשעה 22:11 | IP רשוּם
ציטוט pitbull

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

הצטרף / הצטרפה: 09 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 149
נשלח בתאריך: 24 December 2005 בשעה 23:49 | IP רשוּם
ציטוט Inj3ction

אתה יכול פשוט להגדיר את המערך כמערך גלובאלי
לדוגמא:
קוד:

#include <stdio.h>
char bla[100];
function() {
Do somthing; }
int main() {
Do somthing }

ואתה יכול להשתמש במערך בכל הפונקציות
חזרה לתחילת העמוד הצג את כרטיס החבר של Inj3ction חפש הודעות אחרות של Inj3ction
 
danny
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 25 December 2005 בשעה 01:18 | IP רשוּם
ציטוט danny

Inj3ction
זה מעיד על תכנות גרוע
ולא יעיל.. אני מודע לפיתרון הזה אבל ישנם דרכים אחרות יותר טובות כנראה
חזרה לתחילת העמוד הצג את כרטיס החבר של danny חפש הודעות אחרות של danny בקר בדף הבית של danny
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 25 December 2005 בשעה 21:16 | IP רשוּם
ציטוט Fate

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


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

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

הצטרף / הצטרפה: 09 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 149
נשלח בתאריך: 26 December 2005 בשעה 06:20 | IP רשוּם
ציטוט Inj3ction

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

הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת
הודעות: 106
נשלח בתאריך: 26 December 2005 בשעה 12:49 | IP רשוּם
ציטוט SDX

injection,
זה באמת מעיד על תכנות גרוע


__________________
Smoke weed evryday
~-===-~

חזרה לתחילת העמוד הצג את כרטיס החבר של SDX חפש הודעות אחרות של SDX
 
Inj3ction
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 09 October 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 149
נשלח בתאריך: 26 December 2005 בשעה 12:57 | IP רשוּם
ציטוט Inj3ction

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

הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת
הודעות: 106
נשלח בתאריך: 26 December 2005 בשעה 13:00 | IP רשוּם
ציטוט SDX

ואם ישלך ספריה נפרדת שכתבת, איך תעשה את זה?



__________________
Smoke weed evryday
~-===-~

חזרה לתחילת העמוד הצג את כרטיס החבר של SDX חפש הודעות אחרות של SDX
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה