C++ Web-Bibel gesucht

  • wir haben nächste woche ein C++ prüfung, welche über 4h gehen wird und wohl sehr happig sein wird. wir haben bis jetzt erst ein paar wochen diese programmiersprache durchgenommen...


    kennt jemand eine gute seite im netz, wo Pointer und Strings im speziellen und halt all die standard-programmiersachen enthalten sind? am besten wäre natürlich programmierbeispiele.


    danke schonmals :)

  • Zitat

    Original von Schelm
    /edit: Ich liebe C für die Lesbarkeit:

    Code
    1. (int)*((BYTE *)(&mSaveBuf + (Param[mCurrentParam][0]))) = atoi(Input);

    :gruebel soeben auf meinem Mist gewachsen


    1) In welchem Praktischen Beispiel brauchst du etwas doppelt zu casten?!


    2) Ungültiger L Wert, wie hast du das zum kompilieren gebracht?


    3) Hast du spass an unnötigen Klammer setzen? ;)


    |---> it MUST be a spoon! <---|


      

  • 1) Hat so noch nicht funktioniert, die Klammer um (&mSaveBuf + (Param[mCurrentParam][0])) war noch zu viel. Ohne sie wird nur noch der Pointer auf mSaveBuf zu einem BYTE-Pointer gecastet und damit die Addition des Offsets (Param[mCurrentParam][0]), der in Bytes angegeben ist, möglich.


    2) 100% gültiger L-Wert


    3) siehe 1 :D


    Weasel: google weiss alles ;)

  • Zitat

    Original von Schelm
    Weasel: google weiss alles ;)


    mhm, das weiss ich auch. mich scheissts aber an, aus den 1000 schwarzen schafen das weisse zu finden. vielleicht hat ja hier gerade jemand, der öfters mit C++ zu tun hat, einen guten tip.

  • Weasel, arbeiten tu ich C++, zu hause PHP


    Schelm (Param[mCurrentParam][0]) <--- klammer auch noch zu viel
    dass mSaveBuf zu einem BYTE gecastet wird ist klar ohne die äusseren klammern, casterei ist imo denoch überflüssig.
    und ja, es ist zwar ein gültiger L-Wert, doch zumindest so wie es da steht, bringt es genau nichts, geht ja gleich wieder out of scope...?!


    |---> it MUST be a spoon! <---|


      

  • Weasel: Meine Tipps waren auch ca. google hits 1-3 für "C++ Tutorial" :D


    Xoood: Unser Chefprogrammierer steht auf viele Klammern - und ich in seiner Gunst :D
    Pointeradditionen werden jeweils abhängig vom Typ vorgenommen


    bsp:
    angenommen: (sizeof(int) = 4)


    int *a = 0x00000004;
    a++;


    a entspricht nun 0x00000008


    aber:


    int *a = 0x00000004;
    ((BYTE *) a)++;


    a entspricht nun 0x00000005


    out of scope?
    == Access Violation == Segmentation Fault == Zugriff auf nicht alloziierten Speicher?


    Falls es das heisst (was es ja vermutlich tut), muss ich dich enttäuschen.
    mSaveBuf ist ein Struct von sagen wir mal 100 Byte grösse. Wenn ich nun also von seinem Anfang aus 50 Byte dazurechne, bin ich immer noch erst in der hälfte davon und damit in reserviertem Speicher.


    Alle unklarheiten beseitigt? :p


    Gruss