היי
אני רוצה להגדיר מערך של מחרוזות, כלומר נגיד מערך עם [3] תאים, שהם יהיו סטרינגים, כמו avi, moshe, moti..
איך אני מגדיר את זה ? הבנתי שזה עם פוינטרים..אבל לא הבנתי איך בדיוק לעשות את זה..
וגם איך אחרי זה קוראים לתא מסוים מהאינדקס?
תודה מראש![]()
היי
אני רוצה להגדיר מערך של מחרוזות, כלומר נגיד מערך עם [3] תאים, שהם יהיו סטרינגים, כמו avi, moshe, moti..
איך אני מגדיר את זה ? הבנתי שזה עם פוינטרים..אבל לא הבנתי איך בדיוק לעשות את זה..
וגם איך אחרי זה קוראים לתא מסוים מהאינדקס?
תודה מראש![]()
|
|
מחרוזת עצמה בC היא גם מצביע..כי מחרוזת בעצם מערך של תווים אז זה מצביע למיקום הראשון במחרוזת..
מגדירים את זה ככה:
;[#] char* arrcStrings
במקום # אתה רושם את גודל המערך..
char* זאת הגדרה רגילה של מחרוזת זה לא נחשב מצביע (כשאני אומר מצביע אני מתכוון משתנה שכל המטרה שלו זה להצביע על מקום בזיכרון..מחרוזת היא בעצם כן מצביע כמו שאמרתי למעלה..)
לא ממש הבנתי אותך אבל אם הבנתי נכון אז זה ככה
char M [3]={A,B,C}; X
תתעלם מ X זה כדי לסדר תשורה
עכשיו ככה
A B C זה משתנים אפשר מספרים אפשר כמה שאתה רוצה עכשיו ליד ה - M רשום 3 זאת אומרת 3 משתנים A B C ואם אתה רוצה עוד משתנה אז אתה משנה מ 3 ל נגיד 4 ומוסיף עוד משתנה D וחייב להשים פסיק בין כל משתנה
עכשיו לשימוש
M[NUM] * 5
סתם נגיד אז במקום NUM זה המספר של המשתנה וזה מתחיל לספור מ 0
אז אם רשמתה M[0[ אז זה יציב במקומו A ואם אתה רושם 1 זה B מבין?!
יש מס' דרכים לבצע זאת, ענו לך על כמה מהן כבר.
במקרה ואתה לא מעוניין לשנות אח"כ את גודל המערך, ואתה יודע מראש כמה איברים אתה רוצה להחזיק, אז אתה יכול להשתמש במה שאמרו מקודם.
או בקיצור
אם אתה רוצה להקצאות בצורה דינאמית (נניח אתה לא יודע כמה איברים אתה צריך להחזיק בערך), אז כדאי שתעיף מבט על הפונקציה malloc.קוד:char *strArray[] = { "one", "two", "three" };
כמו זה שמעלי אמר
אם אני הייתי עושה זאת הייתי בונה מערך של מעצביעים (**char) זה מערך של מצביעים שכל תא מצביע למערך
כמובן שתצטרך להשתמש בפונקציה malloc
במקרה של char [3] לא תוכל להכניס שמות כי זהו מערך שכל תא מכיל תו אחד
סלח לי על היצירה הגרוע אבל הרעיון הכללי הוא כך
![]()