Aufgabe C++



  • Hallo !

    Ich habe hier ma ne Aufgabe, mit der ich net klar komme. Vielleicht könnt ihr mir da eventuell ma helfen. Schreibe morgen einen Test darüber. Wie macht man das???

    AUFGABE:
    Vereinbare eine einfache Variable (float), zwei Zeiger und eine eindimensionales Feld mit max. 20 Feldern!
    - Zuweisung der Adresse des 1.Feldelements an die erste Zeigervariable (2Möglk.)
    - Zuweisung der Adresse des 8.Feldelements an die zweite Zeigervariable
    - Zugriff an Inhalt der einfachen Variablen mittels erstem Zeiger
    - Zuweisung der Adresse einer einfachen Variablen an den zweiten Zeiger

    Vielen Dank
    Timi



  • mit was kommst du nicht klar?

    mal genauer 😉



  • eigentlich mit der ganzen Aufgabe nicht 😃

    Also das definieren ma probieren.

    float a;
    int *cd, *ef, z[20];

    Aber mit den, was nach den Anstrichen steht. Hmmmm.... keine Ahnung.

    Dort hängts. 😞



  • zur ersten aussage:

    Zuweisung der Adresse des 1.Feldelements an die erste Zeigervariable (2Möglk.)

    ein array, habt ihr wahrscheinlich gelernt, sieht so aus:

    int arr [20];

    oder

    int *pArr=new int[20]

    (zweitere variante liegt auf dem freispeicher)

    nun sollst du die adresse des ersten elements an eine deiner zeigervariablen übergeben.
    entweder du dereferenzierst das erste element, und bekommst so nicht den inhalt der variablen arr[0], sondern die adresse ;)(ihr habt sicher gehabt, wie man eine variable dereferenziert..), oder du nutzt einfach den zeigernamen selber, da er die adresse des ersten elements enthält.

    ps: wenn du das hinkriegst, ist der rest ein kinderspiel.. mal es dir einfach mal auf.



  • elise schrieb:

    [...] entweder du dereferenzierst das erste element, und bekommst so nicht den inhalt der variablen arr[0], sondern die adresse 😉 [...]

    Ist das nicht genau andersherum? 😉

    Caipi



  • float zahl; // einfache Variable
    float *p1, *p2; // Pointer 1 und 2
    float feld[20]; // Feld mit 20 Werten
    
    // Zuweisung der Adresse des 1.Feldelements an die erste Zeigervariable
    p1 = feld;   
    // oder:
    p1 = &feld[0];   
    
    // Zuweisung der Adresse des 8.Feldelements an die zweite Zeigervariable
    p2 = feld + 7;
    // oder:
    p2 = &feld[7]; 
    
    // Zugriff an Inhalt der einfachen Variablen mittels erstem Zeiger
    zahl = *p1;
    
    // Zuweisung der Adresse einer einfachen Variablen an den zweiten Zeiger
    p1 = &zahl;
    


  • WOW, danke.

    War zwar eigentlich gerade kurz davor, meinen ersten Lösungsansatz zu posten, aber egel. So ähnlich hätte ich das jetzt auch gemacht. Zumindest für die ersten zwei Anstriche.

    Jetzt werd ich erstma den Rest nachvollziehen.

    Vielen Dank



  • Naja musst dir ja nur die folgenden Dinge merken:

    - Der Bezeichner eines Arrays repräsentiert die Adresse des ersten Elements
    - Der Operator & liefert die Adresse eines Bezeichners im Speicher
    - Der Operator * liefert den Inhalt der Speicheradresse auf die der Pointer zeigt



  • FireFlow schrieb:

    // Zuweisung der Adresse des 8.Feldelements an die zweite Zeigervariable
    p2 = feld + 7;
    // oder:
    p2 = &feld[7];
    

    was ist mit

    p2 = &7[feld]
    

    😃



  • Caipi schrieb:

    elise schrieb:

    [...] entweder du dereferenzierst das erste element, und bekommst so nicht den inhalt der variablen arr[0], sondern die adresse 😉 [...]

    Ist das nicht genau andersherum? 😉

    Caipi

    ja, da habe ich mich im kopf verdreht 🙂 ich meinte sonnenverwöhnt vorhin den adressoperator.

    aber der folgemensch hat es ja wunderbar hingeschrieben.



  • obfusc4tion schrieb:

    was ist mit

    p2 = &7[feld]
    

    😃

    Das ist Häresie :p.


Anmelden zum Antworten