עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

פורסם

אני רוצה להגדיר מחלקה שתייצג 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 יש פחות כאב ראש (וגם אפשרויות :\ ) ?

פורסם

קוראים לזה השמה.

אה... ו -




bla.h file
extern 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;
}

פורסם
  • מחבר

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

וידעתי שקוראים לזה השמה :smile1:

פורסם

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

לא משנה היכן הקוד שלך, אתה תמיד יכול להעביר לאחת הפונקציות מצביע. רק תדאג לעשות 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
}

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.