עזרה דחופה בשפת C - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה דחופה בשפת C


shir gold
 Share

Recommended Posts

הי

אני אשמח אם משהו יוכל לעזור לי 

למה אני לא יכולה לעשות בשפת C

בmain

int *count=0;

ולשלוח את count ולא את count &

ולקבל את זה לפונקציה בתור מצביע

ואחכ להדפיס בmain

את *count?

אני אשמח לתשובה

תודה ענקית!!!

 

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

ציטוט של shir gold

הי

אני אשמח אם משהו יוכל לעזור לי 

למה אני לא יכולה לעשות בשפת C

בmain

int *count=0;

ולשלוח את count ולא את count &

ולקבל את זה לפונקציה בתור מצביע

ואחכ להדפיס בmain

את *count?

אני אשמח לתשובה

תודה ענקית!!!

 

את יכולה להדביק את הקוד שלך?

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

הרבה זמן שלא כתבתי קוד בשפת C אבל לפי איך שזה נראה את מנסה להצהיר על משתנה מסוג מצביע והצבת לו ערך 0. האפליקציה לא יכולה לגשת לכתובת הזו בזיכרון אם אחרי ההצהרה תנסי לקרוא את ערך התא מסוג int שכתובתו 0 בעזרת count*.

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

כשאת מכריזה על מצביע מסוג כלשהו (מצביע ל-int במקרה שלך), את צריכה להקצות שיכיל את המידע. מה שקורה זה שהמצביע יחזיק את הכתובת בזיכרון שמייצגת את המקום שהוקצה למידע שלך (מקום בגודל של 4 bytes בדרך כלל במקרה של int).

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

1. לא באמת הקצית מקום בזיכרון

2. גם אם היית מקצה, לא היית מקבלת 0 ככתובת.

ספציפית 0 במצביע נקרא null pointer. הכתובת 0 היא לא כתובת חוקית למצביע.

למעשה, בדרך כלל נשים 0 (או null) במצביע כדי שנוכל בשלב יותר מאוחר בקוד לוודא שבאמת איתחלנו את המצביע (נבדוק שהוא שונה מ-0 או null) לפני שננסה להשתמש בו.

נערך על-ידי captaincaveman
קישור לתוכן
שתף באתרים אחרים

יש לי פה שאלה

אני אשמח מאוד להסבר על התשובה

זה תרגיל בשפת 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

תודה ענקית!!!!

 

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

אני לא מאמין שקיבלת תרגיל כזה.

זה יוצא 800 כי יש לך מערך דו ממדי אז עושים 10 כפול 20 כפול 4.

עושים כפול 4 כי זה הגודל של האלמנטים במערך שהם *int (אפליקציית 32bit). ובהתאם להגדרות הקומפיילר כיום אפשר להגדיר 64bit שאז זה 8 בייטים ולא 4.

אגב לא בטוח שהתכוונת להצהיר על מערך של מצביעים. כנראה התכוונת ללא כוכבית. כלומר אלמנטים מטיפוס מספר שלם.

הצהרה על משתנה מסוג מערך הופכת את המשתנה שלו למצביע לאלמנט הראשון שבו

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

הצטרפ/י לדיון

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

אורח
הוסף תגובה

×   התוכן שהודבק הוא עם עיצוב.   הסר עיצוב

  Only 75 emoji are allowed.

×   הקישור שלך הוטמע אוטומטית.   הצג כקישור רגיל

×   התוכן הקודם שלך שוחזר אוטומטית.   נקה הכל

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
  • צור חדש...