RunningWithScissors פורסם 2007 באוקטובר 9 Share פורסם 2007 באוקטובר 9 אני רוצה להגדיר מחלקה שתייצג 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 משתמשים בזה בספר שאני לומד ממנו כמה וכמה פעמים אבל לא טורחים להסביר מה זה ... קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 באוקטובר 9 Share פורסם 2007 באוקטובר 9 1) השוואה בין 2 מחרוזות אמורה להתבצע ע"י strcmp שמוגדרת בstring.h או ע"י אפונקציה אחרת שתבנה. הפונקציה אמורה לעבור תו תו ולהשוות. ההשוואה שאת הצעת תשווה בין המצביעים בלבד, ותחזיר TRUE אך ורק אם 2 המחרוזות מתחילות באותו מקום בזיכרון.2) הקומפיילר מוסיף '\0' אוטו' עבור כל מחרוזת קבועה כזו(ככה הוא גם יודע עד איפה להדפיס ב cout<<"hello world";).3) extern משמש להצהרה על משתנה שלא הוגדר בקובץ הCPP הנוכחי, אלא בקובץ CPP אחר. אני ממליץ שלא להשתמש בדברים כאלה. אם זה חשוב לך, אתה תמיד יכול להעביר מצביע למשתנה כלשהו. קישור לתוכן שתף באתרים אחרים More sharing options...
RunningWithScissors פורסם 2007 באוקטובר 10 מחבר Share פורסם 2007 באוקטובר 10 1) השוואה בין 2 מחרוזות אמורה להתבצע ע"י strcmp שמוגדרת בstring.h או ע"י אפונקציה אחרת שתבנה. הפונקציה אמורה לעבור תו תו ולהשוות. ההשוואה שאת הצעת תשווה בין המצביעים בלבד, ותחזיר TRUE אך ורק אם 2 המחרוזות מתחילות באותו מקום בזיכרון.2) הקומפיילר מוסיף '\0' אוטו' עבור כל מחרוזת קבועה כזו(ככה הוא גם יודע עד איפה להדפיס ב cout<<"hello world";).3) extern משמש להצהרה על משתנה שלא הוגדר בקובץ הCPP הנוכחי, אלא בקובץ CPP אחר. אני ממליץ שלא להשתמש בדברים כאלה. אם זה חשוב לך, אתה תמיד יכול להעביר מצביע למשתנה כלשהו.תודה ,1) כשדיברתי על להשוות דיברתי על = אחד לא על ==, ואפשר גם לעשות העמסת אופרטור ל= כך שזה יהיה כמו עם המחזרות בJAVA למשל שבמקרה ומשווים 2 מחרוזות (עם =) אין השוואת הפניות אלא זה פועל כמו strcmp2) זה הגיוני P: מאד , עכשיו אני מרגיש קצת טבמל...לא נורא.3) אתה יכול לתת דוגמא להעברה כזו?ד"א זה רק אני או שבJAVA יש פחות כאב ראש (וגם אפשרויות :\ ) ? קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 באוקטובר 10 Share פורסם 2007 באוקטובר 10 קוראים לזה השמה.אה... ו - bla.h fileextern int x;bla.cpp#include "bla.h"int x = 20;main.cpp#include "bla.h"#include <stdio.h>int main(){ printf("%d", x); return 0;}otherfile.cpp#include "bla.h"int func2(int y){ return x + y;} קישור לתוכן שתף באתרים אחרים More sharing options...
RunningWithScissors פורסם 2007 באוקטובר 10 מחבר Share פורסם 2007 באוקטובר 10 האמת היא שהכוונתי לדוגמא של העברת משתנה עם פוינטר בין קבצים ... וידעתי שקוראים לזה השמה קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 באוקטובר 10 Share פורסם 2007 באוקטובר 10 זה בידיוק כפי שאתה מעביר לפונקציות, אין הבדל.לא משנה היכן הקוד שלך, אתה תמיד יכול להעביר לאחת הפונקציות מצביע. רק תדאג לעשות 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} קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.