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

עזרה בסיסית בCPP


RunningWithScissors

Recommended Posts

אני רוצה להגדיר מחלקה שתייצג string ואני רוצה שיהיה CONSTRUCTOR שיקבל CONST CHAR*


class string{
private:
char* str;
public:
string(const char* s);

השאלה היא האם בCPP אפשר פשוט להשוות בין s ל str (עם const_cast)?ז"א האם יש התייחסות מיוחדת לchar* או שזה פשוט יגרום לכך שיהיו שני מצביעים לאותה כתובת. ובאותו הקשר אם באמת אי אפשר לעשות השוואה פשוטה וצריך להעתיק תו-תו האם בCPP נוסף תו 0\ אוטומטית לסופו של מערך CHARS למשל אחרי שאני עושה:

char* s="Im a noobie";

וד"א מה זה EXTERN משתמשים בזה בספר שאני לומד ממנו כמה וכמה פעמים אבל לא טורחים להסביר מה זה ...

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

1) השוואה בין 2 מחרוזות אמורה להתבצע ע"י strcmp שמוגדרת בstring.h או ע"י אפונקציה אחרת שתבנה. הפונקציה אמורה לעבור תו תו ולהשוות. ההשוואה שאת הצעת תשווה בין המצביעים בלבד, ותחזיר TRUE אך ורק אם 2 המחרוזות מתחילות באותו מקום בזיכרון.

2) הקומפיילר מוסיף '\0' אוטו' עבור כל מחרוזת קבועה כזו(ככה הוא גם יודע עד איפה להדפיס ב cout<<"hello world";).

3) extern משמש להצהרה על משתנה שלא הוגדר בקובץ הCPP הנוכחי, אלא בקובץ CPP אחר. אני ממליץ שלא להשתמש בדברים כאלה. אם זה חשוב לך, אתה תמיד יכול להעביר מצביע למשתנה כלשהו.

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

1) השוואה בין 2 מחרוזות אמורה להתבצע ע"י strcmp שמוגדרת בstring.h או ע"י אפונקציה אחרת שתבנה. הפונקציה אמורה לעבור תו תו ולהשוות. ההשוואה שאת הצעת תשווה בין המצביעים בלבד, ותחזיר TRUE אך ורק אם 2 המחרוזות מתחילות באותו מקום בזיכרון.

2) הקומפיילר מוסיף '\0' אוטו' עבור כל מחרוזת קבועה כזו(ככה הוא גם יודע עד איפה להדפיס ב cout<<"hello world";).

3) extern משמש להצהרה על משתנה שלא הוגדר בקובץ הCPP הנוכחי, אלא בקובץ CPP אחר. אני ממליץ שלא להשתמש בדברים כאלה. אם זה חשוב לך, אתה תמיד יכול להעביר מצביע למשתנה כלשהו.

תודה ,

1) כשדיברתי על להשוות דיברתי על = אחד לא על ==, ואפשר גם לעשות העמסת אופרטור ל= כך שזה יהיה כמו עם המחזרות בJAVA למשל שבמקרה ומשווים 2 מחרוזות (עם =) אין השוואת הפניות אלא זה פועל כמו strcmp

2) זה הגיוני P: מאד , עכשיו אני מרגיש קצת טבמל...לא נורא.

3) אתה יכול לתת דוגמא להעברה כזו?

ד"א זה רק אני או שבJAVA יש פחות כאב ראש (וגם אפשרויות :\ ) ?

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

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

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


#include <iostream.h>

int main()
{
int x = 20;
cout<<"old val: "<<x<<"\n";
some_func2(&x);
cout<<"new val: "<<x<<"\n";


return 0;
}


void some_func2(int *a)
{
a = 5;
}

void some_func3(const int *a)
{
a = 5;//oops
}

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

ארכיון

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

×
  • צור חדש...