Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » struct ausgeben fehler

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.12.2015, 21:09 Uhr
~fd1234
Gast


Hallo, habe folgendes Problem und zwar muss ich von der Hochschule ein Programm schreiben in c++ dafür wollte ich ein struct ausgeben, bei mir kommt aber nach Ausführung name.exe funktioniert nicht mehr. Hier der Quellcode:

C++:
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

   struct adresse
   {
        std::string Name;
        std::string Pin;
        std::string Kontostand;

   };

   adresse* Adressen = new adresse[3];

   for (int x = 0; x < 10; x++)
   {
        cout << Adressen[x].Name;
   }
    return 0;
}



-----
Edit: cpp-Tags eingesetzt, Quelltext leicht umformatiert.

Dieser Post wurde am 19.12.2015 um 22:12 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.12.2015, 22:11 Uhr
Hans
Library Walker
(Operator)


Hi,

Du hast zwei Fehler in den Programm:
1) Du reservierst zwar Speicher für die Strukturen, schreibst aber nichts rein. Das heisst, dass der Inhalt unbestimmt, also nicht definiert ist. Er kann sinnvoll sein, ist es in der Regel aber nicht. D.h. es ist nicht klar, was das Programm ausgibt.
2) Du legst 3 Strukturen an, willst aber Namen von 10 Strukturen ausgeben - das geht nicht. Da greifst Du beim 4. Durchlauf der Schleife auf Speicher zu, der Dir nicht gehört, und das kracht. D.h. es führt zum Programmabsturz, bzw. zum beenden durch das Betriebssystem.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 21.12.2015 um 21:02 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.12.2015, 13:48 Uhr
ao

(Operator)



Zitat von Hans:
Du hast zwei Fehler in den Programm:
1) Du reservierst zwar Speicher für die Strukturen, schreibst aber nichts rein. Das heisst, dass der Inhalt unbestimmt, also nicht definiert ist. Er kann sinnvoll sein, ist es in der Rewgel aber nicht. D.h. es ist nicht klar, was das Programm ausgibt.

Das stimmt nicht, zumindest nicht für die ersten drei Adressen. Die Strukturen werden erzeugt und mit allen Membervariablen default-konstruiert. Da der Default-Konstruktor von std::string dem Objekt einen leeren String zuweist, sind die Inhalte nicht unbestimmt.

Mit dem zweiten Fehler (Griff ins Klo ab Index 3) hast du natürlich recht, und der ist auch verantwortlich für den Programmabsturz.

Dieser Post wurde am 21.12.2015 um 13:49 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.12.2015, 20:58 Uhr
Hans
Library Walker
(Operator)


@ao:

Zitat von Hans:
Du hast zwei Fehler in den Programm:
1)Das heisst, dass der Inhalt unbestimmt, also nicht definiert ist.


Zitat von ao:
Die Strukturen werden erzeugt und mit allen Membervariablen default-konstruiert. Da der Default-Konstruktor von std::string dem Objekt einen leeren String zuweist, sind die Inhalte nicht unbestimmt.

Ups, danke für den Hinweis. - Muss mich doch noch mal intensiver mit C++ beschäftigen...
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 21.12.2015 um 21:00 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: