Pointer Problem



  • Hallo wie kann ich c auf b Zeigen lassen ?

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    char * b[20]={"a"};
    char ** c[20];
    
    c = &b;    // geht nicht
    
    cout<<*c;
    
    system("PAUSE");
       return 0;
    }
    

    :schland:



  • Sollte eigentlich so gehen:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    char  b[20]={"a"};
    char * c;
    
    c = &b[0];    // geht nicht
    
    cout<<c;
    
    system("PAUSE");
       return 0;
    }
    

    c zeigt damit auf b[0]. wenn du jetzt c++ machst zeigt c auf b[1], usw.


  • Mod

    b soll ein Array von 20 Zeigern auf char die dann alle auf das Literal "a" zeigen sein? Ich glaube das ist nicht das was du willst. Du solltest vielleicht erstmal einen Schritt vorher anfangen, falls du (wie ich annehme) ein Array von zwanzig chars mit dem Wert 'a' haben willst.



  • Gar nicht. c ist ein Array und kein Pointer und kann daher auf nichts zeigen.



  • So meinte ich das.

    #include <iostream>
    using namespace std; 
    
    int main() 
    { 
    
    char b[20]= "a";
    // char  b[20]= {"a"};  <-- Ist das dass selbe wie char b[20]="a";  ??
    
    char c[20];
    
    // char c will ich hier ausgeben und der wert der rauskommt soll a sein
    
    system("PAUSE"); 
       return 0; 
    }
    


  • wieso möchtest du das denn alles überhaupt machen?

    int main()
    {
      char a[] = "asd";
    
      std::cout << a << std::endl;
    }
    

    würde schon das machen, was du möchtest... ^^

    bb



  • @ Unskilled

    Ich beschäftige micht etwas mit Pointern ^^



  • Noch sowas nebenbei @Unskilled

    wtf ist ein Tagedieb ? xD

    Der nur am Tage beute macht 😕

    Deine Signatur habe ich hier schon öfters gesehen und mich immer gefragt was der jetzt der Tagedieb ist ?^^



  • ptr_* schrieb:

    Noch sowas nebenbei @Unskilled

    wtf ist ein Tagedieb ? xD

    Der nur am Tage beute macht 😕

    Deine Signatur habe ich hier schon öfters gesehen und mich immer gefragt was der jetzt der Tagedieb ist ?^^

    Wie faul kann man eigentlich sein, wenn man das nicht einfach innerhalb von fünf Sekunden per Google herauszufinden bereit ist?

    Na...? Was wäre wohl eine passende Bezeichnung für diese bodenlose Faulheit?



  • ptr_* schrieb:

    @ Unskilled

    Ich beschäftige micht etwas mit Pointern ^^

    aber du verstehst sie nicht?
    und du weist auch nicht so richtig, was du dort machen möchtest, außer: mit pointern beschäftigen?

    tagedieb

    bb



  • ptr_* schrieb:

    So meinte ich das.

    #include <iostream>
    using namespace std; 
    
    int main() 
    { 
    
    char b[20]= "a";
    // char  b[20]= {"a"};  <-- Ist das dass selbe wie char b[20]="a";  ??
    
    char c[20];
    
    // char c will ich hier ausgeben und der wert der rauskommt soll a sein
    
    }
    

    Na, Du kannst hier den Inhalt von b nach c kopieren. Mit Zeigern hat das aber kaum etwas zu tun. Weder b noch c sind Zeiger. Du kannst c nicht auf b "zeigen" lassen, weil b ein Array ist. Ein Array ist etwas anderes als ein Zeiger. Kann es sein, dass Du das Array-Konzept von C und C++ mit dem Array-Konzept einer anderen Sprache (zB Java) verwechselst? In einigen anderen Sprachen hat man in der Tat öfters mit "Referenzen" zu tun. Aber in C und C++ gibt es Referenzen bzw Zeiger nur auf Anfrage -- sprich, Du musst * oder & verwenden. Und in C und C++ sind Arrays auch nicht besonders "intelligent" -- sondern einfach nur eine Aneinanderreihung von Speicher. Im Besonderen sind Arrays keine Zeiger, die auf ihre Elemente zeigen sondern umfassen die Elements selbst.

    int main() 
    { 
       char feld_aus_chars[20] = "a";
       char (*zeiger_auf_feld)[20] = &b;
       char (&referenz_auf_feld)[20] = b;
       char *zeiger1_auf_char = b;
       char *zeiger2_auf_char = &b[0];
       assert(zeiger1_auf_char == zeiger2_auf_char);
    }
    

    kk



  • Doch ich verstehe jetzt Pointer.^^

    Und das mit dem Tagedieb ich dachte das wäre ein ausgedachtes Wort oder so deswegen habe ich es nicht gegoogelt.^^

    Aber ty für den Link. ^^


Log in to reply