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

נושא: שאלה, cpp.

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


הצטרף / הצטרפה: 28 March 2008
משתמש: מנותק/ת
הודעות: 1
נשלח בתאריך: 28 March 2008 בשעה 08:14 | IP רשוּם
ציטוט SRKedmi

שאלה, cpp.
נתון מערך

int arr [n]
a. החלף את האיברים ה-"שכנים"

קוד:
/*
Name: P47.3.1.3
Copyright:
Author: **** ******
Date: 28/03/08 07:38
Description:
*/
#include <iostream.h>
#include <conio.h>
void printarr(int x[])
{
int N = sizeof(x)/sizeof(int);
for(int k=0; k <N; k++)
cout<<"["<<x[k]<<"] ";
cout<<endl;
}
int main()
{
int arr[] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9};
int N = sizeof(arr)/sizeof(int);
//1.Replace two neighbor cells.
printarr(arr);
for(int i=0; i<N; )
{
arr[i]^=arr[i+1];
arr[i+1]^=arr[i];
arr[i]^=arr[i+1];
i+=2;
}
printarr(arr);
getch();
return 0;
}

הבעיה היא כזו, בפונקצית הדפסת המערך printarr
כאשר אני מנסה לגלות את גודל המערך הנתון הוא מחזיר לי 1



int N = sizeof(arr)/sizeof(int) //N equates to 1 ם_O ?


מדובר בסביבת עבודה שגודל משתנה מסוג אינטג'ר הוא 4 בייט.
וזה פשוט יוצר מצב לא הגיוני, כיוון שאם אני מציב במשתנה
N=10
אז הוא כן מדפיס לי את כל המערך..
משמע או שהפונקציה
sizeof
לא תקינה, או שאני פשוט עושה טעות שאני לא מודע אליה.

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

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 28 March 2008 בשעה 14:53 | IP רשוּם
ציטוט ניר

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

ניר


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

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

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

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