לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #6  
ישן 03-06-2005, 18:53
  pex22 pex22 אינו מחובר  
 
חבר מתאריך: 12.04.05
הודעות: 40
בתגובה להודעה מספר 5 שנכתבה על ידי no nick.inc שמתחילה ב "תודה רבה. יש לי שתי שאלות! ..."

אני ממליץ ללמוד מהאתר www.cplusplus.com ,זה גם לC וגם לC++.
וגם את האתר www.cppreference.com .זה גם לC ולC++.
טוב הנה אני יענה לך על השאלות.
תראה.
אם הפונקציה היא a, אז:
void a(char *b){}
a("aaa");
כאן אתה מכניס לb את הערך "aaa".
char *c="not.my.i.p";
a(c);
כאן אתה מכניס את הערך של c לתוך b שבפונקציה a.
כך שזה אותו הדבר.
רק כדי למנוע אי-הבנות, זה לא מדוייק שאתה מכניס את הערך של c כי "aaa" זה בעצם לא הערך שלו.
אתה מכניס את המיקום בזיכרון שאליו הוכנס "aaa" (בסיום יש '\0') ומאחר וb (של פונקציה a) גם יהיה לו את אותו מיקום, הוא ישתמש באותו מידע שהוכנס משם
אם הזיכרון הוא: [...aaa\0...]
אז במיקום שאיפה מתחיל הa הראשון זה מה שמכניסים לb ואם נדפיס את b הוא ידפיס מאותו a ועד ל0\ (לא כולל).

למה תרצה להכניס char (בהנחה שאתה מתכוון לתו יחיד)?
זה יהיה בעייתי כי זה צריך להיות מחרוזת כדי שיסתיים ב0\ (אלא אם כן התו הוא 0\ ואז לא יהיה לזה טעם).
אבל בכל מקרה, אפשר ככה:
char d='5';
a(&d);
בצירוף של & אני שולח לפונקציה a את המיקום של משתנה d. כמו:
char *d="";
d[0]='5';
a(d);
שמתי לd "" כדי שיאחסן מקום רק ל0\ ואז אחליף אותו ב'5' (זה רק כדי להמחשה. אל תיקח את זה בתור הרגל ובתור בכלל. שתי שגיאות:
1) מחרוזת חייבת להסתיים ב0\. בהמשך אסביר למה. זה גם מתייחס לדוגמא הראשונה שנתתי עם הסימן &.
2) זה לא רעיון טוב לאחסן ככה זיכרון, זה היה רק כדי לקצר את ההודעה. במיוחד אם תרצה לאחסן הרבה תאים.)
ובהמשך להודעה. אז אם נדפיס את זה דרך פונקציה מוכנה אז זה תלוי בפונקציה מתי המחשב יפסיק להדפיס תווים לאחר תו '5'.
הסיבה: הפונקציה המוכנה (כמו printf) מחכה שתמצא 0\ ואז תפסיק את הלולאה שבה היא מדפיסה את התווים.
אז או שהיא תמצא 0\ של מחרוזת אחרת או שהיא תגלה איכשהוא שזה מחוץ למחרוזת. (סביר להניח שהיא תגלה איכשהוא אבל קצת מאוחר, אולי יש כל מיני 0\ בזיכרון כשהמחשב נפתח והם משתנים כשמאחסנים זיכרון במקומות שלהם? לא יודע.)

וואני לא רואה הבדל בין שתי השורות (בקשר לשאלות ששאלת)
רק תזכיר לי לא להמליץ על הספר הזה.

מקווה שעזרתי (ושהבנת),
אמיר.

נערך לאחרונה ע"י pex22 בתאריך 03-06-2005 בשעה 18:59.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 06-06-2005, 17:33
  no nick.inc no nick.inc אינו מחובר  
 
חבר מתאריך: 14.11.04
הודעות: 79
בתגובה להודעה מספר 1 שנכתבה על ידי no nick.inc שמתחילה ב "רוצה להתקדם, צריך עזרה."

נראה לי שאנחנו לא ממש מבינים אחד את השני (או שאני לא הבנתי אותך).

בשורה

קוד:
client.sin_addr.s_addr = inet_addr( "127.0.0.1" );


יש אי פי מסויים שהוא מוגדר מראש נכון,
אבל אני רוצה שה אי יפ שם לא יהיה קבוע, אלה לקבל מהמשתמש את ה אי פי
ואז רק להציב אותו בשורה הנ"ל.
עכשיו אני חושב שאני צריך לקבל מהמשתמש מחרוזת בעזרת GETS
שתקרא נגיד mahrozetip
למשל עם המשתמש יכתוב 123.234.43.23 אז המחרוזת כמובן תראה
קוד:
'1' '2' '3' '.' '2' '3' '4' '.' '4' '3' '.' '2' '3' '\0'


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

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

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

כלי אשכול חפש באשכול זה
חפש באשכול זה:

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

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 17:47

הדף נוצר ב 0.10 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר