array mit zeiger initialisieren



  • hallo!
    bin anfänger und komm hier nicht weiter 😞 :

    Aufgabe:
    array mit 5 elementen mit einem zeiger initialisieren und wieder ausgeben.

    meine Lösung:

    #include <iostream.h>
    void main (void)
    {
    int zahlen [5];
    int *p_int=&zahlen[0];

    for (int i=0;i<5;i++)
    {
    *p_int=i;
    p_int=&zahlen[i] ;
    }

    for(i=0;i<5;i++)

    cout<< zahlen[i]<<endl;

    cout<< zahlen[0];
    }

    Frage 1: kann oder sollte man das so machen?
    Frage 2: 😕 Wieso wir der wert von zahlen[0]mit 1 und nicht mit 0 ausgegeben? 😕

    dank euch jetz schon für die hilfe!!



  • Wenn du die dynamische Variante suchst:

    int *p = new int[5];
    
    for(int i=0; i<5; i++)
        p[i] = i;
    
    delete p;
    


  • Hallo

    Bitte benutze:

    #include <iostream>  ohne .h
    

    und

    int main()
    {
    return 0;
    }
    

    chrische



  • ⚠ wenn ich das .h weg lasse, wird das hier angezeigt ⚠ :

    --------------------Konfiguration: zeiger - Win32 Debug--------------------
    Kompilierung läuft...
    zeiger.cpp
    d:\programme\microsoft visual studio\common\lernen\lernen\zeiger.cpp(18) : error C2065: 'cout' : nichtdeklarierter Bezeichner
    d:\programme\microsoft visual studio\common\lernen\lernen\zeiger.cpp(18) : error C2065: 'endl' : nichtdeklarierter Bezeichner
    d:\programme\microsoft visual studio\common\lernen\lernen\zeiger.cpp(18) : warning C4552: '<<' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
    d:\programme\microsoft visual studio\common\lernen\lernen\zeiger.cpp(20) : warning C4552: '<<' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
    Fehler beim Ausführen von cl.exe.

    zeiger.obj - 2 Fehler, 2 Warnung(en)



  • Hallo

    Schreib noch

    using namespace std;
    

    unter die Includeanweisung. Oder du schreibst

    std::cout
    

    und

    std::endl
    

    chrische



  • Die Funktionen sind in dem Header in einem eigenen Namespace untergebracht. Also reicht es am Anfang, wenn du den namespace global einbindest:

    #include <iostream>
    
    using namespace std;
    


  • zu 2.
    Weil du der Position 0 eine 1 zuweist. Du erhöhst deinen Index ja erst nach der Zuweisung.
    so wäre es richtig

    nt zahlen [5];
    int *p_int;
    
    for (int i=0;i<5;i++)
    {
    p_int=&zahlen[i] ;
    *p_int=i;
    }
    

    und zu 1.
    Man kann es so machen, sollte es meiner Meinung nach aber nicht. Das wäre mir zu unübersichtlich.



  • dank euch - die beiträge waren alle hilfreich! 😉

    ich versteh nur noch nicht, wann man bei zeigern ein * braucht und wann nicht 😕

    int zahlen [5];
    int *p_int=&zahlen[0];

    for (int i=0;i<5;i++)
    {

    p_int=&zahlen[i] ;
    *p_int=i+1;
    }

    for(i=0;i<5;i++)

    cout<< zahlen[i]<<endl;



  • Lies dir bitte mal diesen Beitrag in Ruhe durch. Dort ist das alles genau erklärt:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39497.html


Anmelden zum Antworten