[C/C++] Ich verzweifle an Pointern...(malloc etc.)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Dragonknight, 11. November 2009 .

Schlagworte:
  1. 16. November 2009
    AW: Ich verzweifle an Pointern...(malloc etc.)

    int *foo = 1

    heißt das *foo auf Speicherplatz 1 zeigt
    das mit &bar ist richtig!

    das mit int *pntr = addr sollte afaik klappen, ist aber von abzuraten da du nicht soviel kontrolle über den speicher hast, lass das mal lieber ;-)
    mfg
    Joker

    EDIT: Ahrg... ich glaub war heut zu lang inner Uni... stimmt nicht was ich da geschrieben hab...
     
  2. 16. November 2009
    AW: Ich verzweifle an Pointern...(malloc etc.)

    Aaalsoo..int *foo = 1; geht schonmal nicht. Wenn dann würde man man es so machen müssen:
    Code:
    int val = 1;
    int *foo = &val;
    Das hier mach_was(*foo); //übergibt adresse auf die der pointer zeigt ist auch falsch. Denn mit *foo übergibst du den dereferenzierten Wert, also 1 (den Wert von val in meinem Bsp.). Wenn du den Pointer übergeben willst, also damit auch die Adresse des dereferenzierten Wertes musst du mach_was(foo); schreiben.
    Der Rest ist aber richtig


    Nein, das geht nicht, weil es dann einen Kompilerfehler gibt, denn du kannst einen int nicht in einen int* umwandeln.
    Wie man das, was du möchtest macht, will mir gerade nicht einfallen. Wenn ichs wieder weiß, editiere ichs



    -----------

    Sry, aber das was du da gerade geschrieben hast, ist einfach nur falsch. Jedenfalls glaube ich das Und mein Compiler gibt mir recht
     
  3. 16. November 2009
    AW: Ich verzweifle an Pointern...(malloc etc.)

    ah okay, danke schonmal für die schnelle hilfe.

    wenn ich das richtig verstanden habe müsste folgendes jetzt richtig sein:

    Code:
    #include <stdio.h>
    
    void mach_was(int v) {
     printf("%d", v);
    }
    
    int main(void) {
     int foo = 1;
     int *bar = &foo;
     
     mach_was(foo); //1
     mach_was(*bar); //1
     
     ++foo;
     
     mach_was(foo); //2
     mach_was(*bar); //2
     
     return 0;
    }
    hab leider keinen compiler zur hand ^^
     
  4. 16. November 2009
    AW: Ich verzweifle an Pointern...(malloc etc.)

    jep! so stimmts!

    mfg
    Joker


    EDIT: So jetzt hab ich aber noch ne Frage... wie konnte man einem Pointer den jetzt auf eine feste Adresse zeigen lassen?? Da ging doch auch, oder irre ich mich da?
     
  5. 16. November 2009
    AW: Ich verzweifle an Pointern...(malloc etc.)

    So weit ich weiß, kannst du einem Pointer nicht einfach eine beliebige Adresse zuweisen.

    Das hat einfach den Grund, dass es keinen Sinn hat. Denn es gibt einerseits physikalische Adressen und virtuelle. Die, die du bspw. mit &var bekommst, ist eine virtuelle.
    Einem Pointer eine belibiege Adresse zuweisen, macht eigentlich ja nur Sinn, wenn man z.B. auf einen anderen Prozess zugreifen will. Da in diesem die virtuellen Adressen aber ganz andere Speicherorte auf dem physikalischen RAM haben, nutzt es dir im endeffekt nichts.

    Natürlich geht das zugreifen auf die Daten anderer Prozesse trotzdem, doch dafür benutzt man dann (denke ich mal) betriebssystemeigene Funktionen.

    Eine ganz andere Sache ist aber z.B. folgendes:
    Denn hier wird der Pointer inkrementiert und immer um eine Adresse erhöht. Dadurch lassen sich in diesem Fall nacheinander die Werte aus dem Array lesen.
     
  6. 16. November 2009
    AW: Ich verzweifle an Pointern...(malloc etc.)

    ahh Ok,.. dann wars wahrscheinlich das... aufjedenfall danke fürs auffrischen meiner C-Kenntnisse!

    mfg
    Joker
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.