3 Fragen für Anfänger

  • C++

  • reppesis
  • 1131 Aufrufe 9 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 3 Fragen für Anfänger

    Howdy!
    Bräuchte einmal möglichst schnell Hilfe mit den folgenden Fragen, die nun eigentlich mit etwas fachwissen nicht schwer sein sollten:

    1. In das Feld text [20] wurde der String Hallo Weeelt geschrieben. Geben Sie die mit Hilfe der Zeile:
    cout << text[1]; cout << text[14]
    erzeugte Ausgabe an und erläutern Sie diese.

    Ich schätze mal, das aus [1] ein a kommt, weil ja bei 0 angefangen wird zu zählen und bei [14] irgendein kauderwelch, weil vorher nix initialisiert wurde ... oder?


    2. Was geschieht, wenn das Feld wie folgt deklariert wird: text [10] und anschließen der String Hallo Weeelt geschrieben würde. Begründen Sie Ihre Aussage.

    Irgendwann wird jemand das t vermissen, oder?


    3. Aus wievielen Elementen besteht das Feld, das mit der Zeile char w2 []="Test";" deklariert und initialisiert wird?

    Die kniffeligste Frage, ich schätze mal es sind 6, weil das Zeilenende doch durch ein Slash irgendwas definiert wird ??
  • Ich hab grad noch nich so viel zeit zu antworten, daher erstmal die Frage:
    Was spricht dagegen es auszuprobieren? Wenn du mich überzeugen kannst das du das nicht hinbekommst antworte ich dir nachher ;)

    Neee, muss jetz erstmal zur arbeit, deshalb keine genaueren informationen jetzt..
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]
  • Mh... vielleicht hättest du ein wenig eher auf die Idee kommen können danach zu fragen... Naja vielleicht versau ich dir jetzt Deinen Tag, wenn ja tuts mir leid ;)

    reppesis schrieb:

    1. In das Feld text [20] wurde der String Hallo Weeelt geschrieben. Geben Sie die mit Hilfe der Zeile:
    cout << text[1]; cout << text[14]
    erzeugte Ausgabe an und erläutern Sie diese.

    Ich schätze mal, das aus [1] ein a kommt, weil ja bei 0 angefangen wird zu zählen und bei [14] irgendein kauderwelch, weil vorher nix initialisiert wurde ... oder?

    bei [14] müsste nichts ausgegeben werden. Ich meine zu wissen (bin nicht 100% sicher) das arrays, wenn ihnen eine feste größe gegeben wird, automatisch initialisiert werden, in dem fall dann mit " "

    reppesis schrieb:

    2. Was geschieht, wenn das Feld wie folgt deklariert wird: text [10] und anschließen der String Hallo Weeelt geschrieben würde. Begründen Sie Ihre Aussage.

    Irgendwann wird jemand das t vermissen, oder?

    Nein, es wird zu einem compiler error kommen, weil du versuchst mehr speicher zu belegen als du reserviert hast.

    reppesis schrieb:

    3. Aus wievielen Elementen besteht das Feld, das mit der Zeile char w2 []="Test";" deklariert und initialisiert wird?

    Die kniffeligste Frage, ich schätze mal es sind 6, weil das Zeilenende doch durch ein Slash irgendwas definiert wird ??

    Es sind 5, die 4 Buchstaben + Endekennung '\0' was aber nur 1 Zeichen ist
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]
  • Zerd schrieb:


    Nein, es wird zu einem compiler error kommen, weil du versuchst mehr speicher zu belegen als du reserviert hast.


    Nein, wenn man versucht, in einen unreservierten speicherblock zu schreiben, kommt es zu einem laufzeitfehler, unter Linux eine segmentation fault und unter windows weiß ich nicht, wies heißt;
    [COLOR="Green"]"A dream you dream alone is only a dream. A dream you dream together is reality"[/color]

    John Lennon

    [SIZE=1],,,[/SIZE][SIZE=1]*&#801;&#844;l&#801;*,,,,,,,,,,&#801;&#801; &#801;&#820;&#305;&#820;&#820;&#801; ,,,,,,,,,*&#801;&#844;l&#801;*,,,,,,,,,,*&#801;&#844;l&#801;*&#801;&#801; &#801;&#820;&#305;&#820;&#820;&#801; &#801;&#801;&#865;|&#818;&#865;&#818;&#865;&#818;&#865; &#818;&#9643;&#865;&#818; &#818;&#865;&#818;&#865;&#818;&#960;&#818;&#865;&#818;&#865; &#818;&#865;&#818;&#9643;&#818;&#865;&#818;&#865; &#818;|&#801;&#801;&#801; &#801; &#801;&#820;&#305;&#820;&#801;&#801; *&#801;&#844;l&#801;*_,,,,,,,,&#801;&#801; &#801;&#820;&#305;&#820;&#820;&#801; ,,,,,,,,*&#801;&#844;l&#801;*,,[/SIZE][SIZE=1],,,[/SIZE][SIZE=1],,,,,,&#801;&#801; &#801;&#820;&#305;&#820;&#820;&#801; ,[/SIZE][SIZE=1],,[/SIZE]
    [SIZE="1"][COLOR="Purple"]Up 1[/color][/SIZE] [SIZE="1"] [COLOR="Olive"]Up 2_The_Beatles_Red_Album[/color][/SIZE]
  • Ralph Peter schrieb:

    Nein, wenn man versucht, in einen unreservierten speicherblock zu schreiben, kommt es zu einem laufzeitfehler, unter Linux eine segmentation fault und unter windows weiß ich nicht, wies heißt;


    Dann muss das irgendwie auch compilerabhängig sein, denn wenn ich diesen Fehler mit dem in VC++ compiler compiliere bekomme ich keinen runtime error, sondern einen Compiler error: "C2117: 'text' : array bounds overflow".

    Beim cc compiler bekomme ich die Meldung "(E) String literal is longer than target array. Literal is truncated on the right." CC erkennt den Fehler und kürzt den String automatisch. -> auch kein runtime error

    Beim mingw und codeblocks bekomme ich ebenfalls einen compiler error: "error: initializer-string for array of chars is too long
    :: === Build finished: 1 errors, 0 warnings ==="

    Also einen runtime error konnte ich nicht erzeugen :)
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]
  • Ja, aber es ging doch explizit um dieses Beispiel:

    PHP-Quellcode

    1. char text[10] = "Hallo Weeelt";


    Das ist ein Fehler der bereits beim Kompilieren bekannt ist und deshalb sollte es meiner Meinung nach auch immer einen Compiler-Error geben. Anders ist es wenn man zur Laufzeit Text eingibt und in einem zu kleinen array speichern will, dann wird es einen Runtime-error geben...

    Wenn ihr immernoch der Meinung seid das es (bei dem o.g. Beispiel) zu einem Laufzeitfehler kommt posted mal bitte den namen vom compiler den ihr verwendet habt und den sourcecode, das würde ich gerne mal sehen... :)
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]