Ankündigung

Einklappen
Keine Ankündigung bisher.

C++ Frage - Brauche Hilfe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    C++ Frage - Brauche Hilfe

    He,

    ich fange derzeit mit c++ an und habe eine Frage zu folgendem Programm:
    [quote]
    #include ;
    using namespace std;

    int main()
    {
    char c[1];
    c[0] = 'a';
    c[1] = 'b';
    c[2] = 'c';

    cout

    #2
    wie wo du das b und c hin schreibst?

    erst in den array und dann in c-out.

    Kommentar


      #3
      Aber c ist doch ein Array der Länge 1, also sollte ich doch bloß Zugriff auf c[0] haben, oder?

      Kommentar


        #4
        Zitat von TomTom
        Aber c ist doch ein Array der Länge 1, also sollte ich doch bloß Zugriff auf c[0] haben, oder?
        eigentlich schon ;)

        als buch kann ich dir "Einstieg in C++" von Arnold Willemer empfehlen (kostet ca. 20€, hardcover, sehr gut für den einstieg geeignet).

        Kommentar


          #5
          Gibt es auch ein paar C++ Foren, die bei Fragen zu empfehlen wären? Wenn man bei Google "c++ Forum" eingibt, kommt einach zu viel Zeug.

          Kommentar


            #6
            Zitat von TomTom
            Gibt es auch ein paar C++ Foren, die bei Fragen zu empfehlen wären? Wenn man bei Google "c++ Forum" eingibt, kommt einach zu viel Zeug.
            http://www.c-plusplus.de/forum/

            Kommentar


              #7
              Vielen Dank.

              Kommentar


                #8
                Das was du da oben geschrieben hast funktioniert auch nicht mit jedem Compiler. Es gibt Compiler, die keine Fehlermeldung bei solchen Bereichsüberschreitungen werfen. Hier liegt es allein in deiner Verantwortung, dass so etwas nicht passiert. Man kann auch nicht vorhersagen, was der Compiler mit diesem Speicherbereich macht. Zum Beispiel kann es passieren dass eine andere Variable den selben Speicherbereich wie c[1] und c[2] belegt und tut damit deine Werte ohne zu fragen überschreiben. Auch die Nullterminierung kann überschrieben werden.

                Also generell sollte man immer prüfen, ob das Array die gewünschte Länge hat, welche man erwartet und sich nicht 100%ig auf den Compiler verlassen.

                Kommentar


                  #9
                  tja bei anderen p.-sprachen kann sowas nicht passieren :p

                  Kommentar


                    #10
                    Mit C/C++ kann man viel "Unfug" machen, wie auch #8 schon schrieb.

                    Wenn du dich spaeter mit Pointern befasst wirst du merken, dass man recht sorgfaeltig programmieren muss. In C (bin mir nicht sicher ob das in C++ auch so ist) koennen Variablen ueber Pointer geaendert werden, auch wenn sie explizit als nicht-aenderbare-Variable deklariert sind, wenn man das Ziel eines Pointers nicht vernuenftig initialisiert hat bekommt man haeufig nicht etwa eine Fehlermeldung, sondern einfach irgendwelche Werte etc.

                    Wenn du den GCC als Compiler benutzt solltest du deshalb auf jedenfall mit dem Parameter "-Wall" compilieren, damit du von Anfang an lernst, sorgfaeltig zu arbeiten.

                    Kommentar


                      #11
                      Zitat von Raybeez
                      In C (bin mir nicht sicher ob das in C++ auch so ist) koennen Variablen ueber Pointer geaendert werden
                      geht auch in c++

                      Kommentar


                        #12
                        Zitat von Raybeez
                        Wenn du den GCC als Compiler benutzt solltest du deshalb auf jedenfall mit dem Parameter "-Wall" compilieren, damit du von Anfang an lernst, sorgfaeltig zu arbeiten.
                        ftp://ftp.fu-berlin.de/unix/language...ses/gcc-4.6.1/

                        Welchen dieser Releases sollte ich nehmen?


                        edit: Ich habe von der Uni aus MS VS 2010. Macht es da überhaupt Sinn sich GCC zu laden?

                        Kommentar


                          #13
                          [quote=TomTom]
                          He,

                          ich fange derzeit mit c++ an und habe eine Frage zu folgendem Programm:
                          [quote]
                          #include ;
                          using namespace std;

                          int main()
                          {
                          char c[1];
                          c[0] = 'a';
                          c[1] = 'b';
                          c[2] = 'c';

                          cout

                          Kommentar


                            #14
                            Länge eines Arrays kannst du z.B. so bekommen:

                            int array[10];
                            std::cout

                            Kommentar


                              #15
                              Zitat von TomTom
                              edit: Ich habe von der Uni aus MS VS 2010. Macht es da überhaupt Sinn sich GCC zu laden?
                              Ein Wechsel ist nicht noetig. VS2010 ist eine ziemlich gute Entwicklungsumgebung under der Compiler ist auch ordentlich.

                              Fuer Windows ist ansonsten die IDE Codeblocks empfehlenswert. Die unterstuetzt u.a. den GCC.

                              Aber in deinem Fall wuerde ich erstmal nicht wechseln.

                              Kommentar

                              Lädt...
                              X