פורסם 2023 באוקטובר 102 שנים הי אני אשמח אם משהו יוכל לעזור לי למה אני לא יכולה לעשות בשפת C בmain int *count=0; ולשלוח את count ולא את count & ולקבל את זה לפונקציה בתור מצביע ואחכ להדפיס בmain את *count? אני אשמח לתשובה תודה ענקית!!!
פורסם 2023 באוקטובר 102 שנים ציטוט של shir gold הי אני אשמח אם משהו יוכל לעזור לי למה אני לא יכולה לעשות בשפת C בmain int *count=0; ולשלוח את count ולא את count & ולקבל את זה לפונקציה בתור מצביע ואחכ להדפיס בmain את *count? אני אשמח לתשובה תודה ענקית!!! את יכולה להדביק את הקוד שלך?
פורסם 2023 באוקטובר 102 שנים אבל בגדול int *count = 0 זה לא משהו שאת יכולה להשתמש בו ממש... את צריכה להקצות זיכרון נערך 2023 באוקטובר 102 שנים על-ידי captaincaveman
פורסם 2023 באוקטובר 102 שנים הרבה זמן שלא כתבתי קוד בשפת C אבל לפי איך שזה נראה את מנסה להצהיר על משתנה מסוג מצביע והצבת לו ערך 0. האפליקציה לא יכולה לגשת לכתובת הזו בזיכרון אם אחרי ההצהרה תנסי לקרוא את ערך התא מסוג int שכתובתו 0 בעזרת count*.
פורסם 2023 באוקטובר 102 שנים מחבר מצרפת פה תמונה של הקוד תודה רבה!! זה מריץ לי אבל לא מדפיס את הcount
פורסם 2023 באוקטובר 102 שנים תצהירי על משתנה count ללא *. ושאת מעבירה לפונקציה cheak את הפרמטר השני תעשי count&. ושאת מדפיסה את הערך של count בשורה אחריו גם תורידי את ה-*.
פורסם 2023 באוקטובר 102 שנים מחבר תודה רבה! אגב איך אני יכולה לעשות את זה עם malloc??? והבנתם מה היתה הבעיה? פשוט בגלל שהוא הצביע לnull?
פורסם 2023 באוקטובר 112 שנים כשאת מכריזה על מצביע מסוג כלשהו (מצביע ל-int במקרה שלך), את צריכה להקצות זיכרון שיכיל את המידע. מה שקורה זה שהמצביע יחזיק את הכתובת בזיכרון שמייצגת את המקום שהוקצה למידע שלך (מקום בגודל של 4 bytes בדרך כלל במקרה של int). מה שאת עשית זה לשים את הכתובת 0 בתור הכתובת בה הוקצה המקום בזיכרון למידע שלך. זה כמובן לא נכון כי: 1. לא באמת הקצית מקום בזיכרון 2. גם אם היית מקצה, לא היית מקבלת 0 ככתובת. ספציפית 0 במצביע נקרא null pointer. הכתובת 0 היא לא כתובת חוקית למצביע. למעשה, בדרך כלל נשים 0 (או null) במצביע כדי שנוכל בשלב יותר מאוחר בקוד לוודא שבאמת איתחלנו את המצביע (נבדוק שהוא שונה מ-0 או null) לפני שננסה להשתמש בו. נערך 2023 באוקטובר 112 שנים על-ידי captaincaveman
פורסם 2023 באוקטובר 122 שנים מחבר יש לי פה שאלה אני אשמח מאוד להסבר על התשובה זה תרגיל בשפת c #include <stdio.h> #define r 10 #define c 20 int main() { int(*p)[r][c]; printf("%d", sizeof(*p)); getchar(); return 0; } התשובה היא 800 אני אשמח מאוד להסבר לא הבנתי למה זה 800 תודה ענקית!!!!
פורסם 2023 באוקטובר 122 שנים אני לא מאמין שקיבלת תרגיל כזה. זה יוצא 800 כי יש לך מערך דו ממדי אז עושים 10 כפול 20 כפול 4. עושים כפול 4 כי זה הגודל של האלמנטים במערך שהם *int (אפליקציית 32bit). ובהתאם להגדרות הקומפיילר כיום אפשר להגדיר אפליקציות 64bit שאז זה 8 בייטים ולא 4. אגב לא בטוח שהתכוונת להצהיר על מערך של מצביעים. כנראה התכוונת ללא כוכבית. כלומר אלמנטים מטיפוס מספר שלם. הצהרה על משתנה מסוג מערך הופכת את המשתנה שלו למצביע לאלמנט הראשון שבו
הצטרפ/י לדיון
בשלב זה תוכל/י להצטרף לדיון, ולאחר מכן להצטרף לקהילה שלנו. אם כבר יש לך חשבון אצלנו, אנא התחבר/י עכשיו על מנת להגיב תחת שם המשתמש שלך.
לתשומת לבך: התגובה תופיע לגולשים לאחר אישור של צוות הנהלת הפורומים.