עבור לתוכן

שלום. שאלה ב c++.

Featured Replies

פורסם

1. אם הבנתי נכון אז ככה.

כשאתה מעביר new1+t לפונקציה כאשר new1 זה מערך אז מה שהוא מעביר בעצם לפונקציה זה את המיקום (ולא את האיבר, וזה אולי מה שמטעה) של האיבר בזיכרון לדוגמא אם התוכנית מצאה לנכון להקצות במקום מספר 400 בזיכרון למערך בגודל עשר, וייצוג של int בזיכרון הוא 4 ביטים אז אם יש לנו מערך בגודל 10 הוא יראה בזיכרון ככה:

[ 400 ] [ 404 ] [ 408 ] [ 412 ] [ 416 ] [ 420 ] [ 424 ] [ 428 ] [ 432 ] [ 436 ]

אז new1 בעצם מצביע לנו על מקום 400 בזיכרון והוא משוג int אז הוא יודע שהאיבר שהוא מצביע עליו הוא בגודל 4 ביטים.

מה שקורה new1 + 1 בעצם לא מצביע למקום 401 בזיכרון, אלא למקום 404 בגלל שהוא מסוג int שהוא בגודל 4 ביטים.

עכשיו מה שקורה זה ככה, נגיד והעברנו לפונקציה את new1 + 1 אז בעצם x שהוא פוינטר קיבל להצביע על מקום 404 בזיכרון.

אז בעצם *x זאת אומרת הערך שנמצא במקום שפוינטר מצביע אליו זה x [ 0 ] וזה בעצם new[1] .

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

2. האפשרות היחידה שתראה לך יפה זה להגדיר מערך גלובלי שלכל הפונקציות יש גישה אליו, ובפונקציה להעביר את המיקום שרוצים לשנות, כלומר את b,t ולא new1+t והשני שאני לא זוכר מהו כרגע :)

פורסם

יש רק פקודה אחת: qsort שזה הQuickSort של C ויש הגדרה של פונציה שאומרת איזה struct בא קודם

פורסם
  • מחבר

טוב...

אולי עם התרגול תבוא ההבנה.

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים