Deklarationen



  • Hallo! 🙂
    Bin noch Anfänger auf niedrigem Niveau und beschäftige mich theoretisch gerade mit arrays!
    Was passiert eigtl. bei folgenden Arrays Deklarationen?

    a) short array[4] = { 1, 2 };

    b) char str = "a";

    d) float value[ ];

    e) unsigned int buffer[3] = { 13, 707, 0, 3000 };

    Gruß


  • Mod

    gustlbert schrieb:

    a) short array[4] = { 1, 2 };

    array hat den Inhalt 1;2;0;0

    b) char str = "a";

    Das geht nicht. Einem char kannst du kein const char[2] zuweisen.

    hello ist ein char[12] und hat den Inhalt "hello world\n"

    d) float value[ ];

    Das geht nicht. Die Größe muss bekannt sein.

    e) unsigned int buffer[3] = { 13, 707, 0, 3000 };

    Das geht nicht. Die Anzahl der Werte muss kleinergleich der Arraygröße sein.

    Das geht nicht. table als mehrdimensionales Array muss alle Dimensionen außer der ersten fix haben.

    P.S.: Anfänger auf niedrigem Niveau und schon solche Schweinereien machen? Bringt man std::array und std::vector gar nicht mehr bei?



  • "Was passiert" ist eine relativ ungenaue Frage. Zudem sind das nicht nur Deklarationen, sondern vor allem auch Definitionen. (Wenn wir schon mal dabei sind. ;))

    gustlbert schrieb:

    a) short array[4] = { 1, 2 };

    Definiert ein Array aus vier short Variablen, wobei die das erste Element mit 1, das zweite mit 2 und die anderen mit 0 initialisiert werden.

    gustlbert schrieb:

    b) char str = "a";

    Ungültig. char ist ein Zeichen, "a" ist vom Typ const char[2].

    gustlbert schrieb:

    Ein Array aus 12 char wird mit einem const char[12] initialisiert, die Werte werden kopiert.

    gustlbert schrieb:

    d) float value[ ];

    Ungültig.

    gustlbert schrieb:

    e) unsigned int buffer[3] = { 13, 707, 0, 3000 };

    Keine gute Idee.

    gustlbert schrieb:

    Ungültig, nur die äußere Größe kann automatisch bestimmt werden.

    Edit:
    omg, 3 Minuten zu spät.



  • cooky451 schrieb:

    gustlbert schrieb:

    e) unsigned int buffer[3] = { 13, 707, 0, 3000 };

    Keine gute Idee.

    Nicht nur keine Gute Idee.
    Ungültig, Syntaxfehler.

    Edit: HUST, Eig. 7 Minuten zu spät, hat SeppJ schon geschrieben



  • SeppJ schrieb:

    hello ist ein char[12] und hat den Inhalt "hello world**\n**"

    "hello world**\0**"

    Und seit wann machen wir hier Hausaufgaben?



  • hustbaer schrieb:

    Und seit wann machen wir hier Hausaufgaben?

    Seitdem wir froh sind, dass Fragen in ordentlichem Deutsch und mehr oder weniger klar gestellt werden; ohne dabei gleich die eingescannte Aufgabenstellung anzuhängen.



  • cooky451 schrieb:

    hustbaer schrieb:

    Und seit wann machen wir hier Hausaufgaben?

    Seitdem wir froh sind, dass Fragen in ordentlichem Deutsch und mehr oder weniger klar gestellt werden; ohne dabei gleich die eingescannte Aufgabenstellung anzuhängen.

    Naja, so richtig viel Mühe hat sich der TE auch nicht gegeben...



  • gustlbert schrieb:

    Was passiert eigtl. bei folgenden Arrays Deklarationen?

    Da es noch keiner angemerkt hat: Es sind allesamt keine Deklarationen sondern Definitionen. Oder zumindest Versuche, etwas zu definieren 😉



  • pumuckl schrieb:

    Da es noch keiner angemerkt hat: Es sind allesamt keine Deklarationen sondern Definitionen.

    Es wurde schonmal angemerkt, da war es auch noch teilweise richtig. Aber dass es "keine Deklarationen" seien ist einfach Quatsch.



  • Bashar schrieb:

    pumuckl schrieb:

    Da es noch keiner angemerkt hat: Es sind allesamt keine Deklarationen sondern Definitionen.

    Es wurde schonmal angemerkt, da war es auch noch teilweise richtig. Aber dass es "keine Deklarationen" seien ist einfach Quatsch.

    Sind das nicht Initialisierungen, die eine Definition implizieren die wiederum eine Deklaration impliziert?



  • Bashar schrieb:

    Es wurde schonmal angemerkt, da war es auch noch teilweise richtig. Aber dass es "keine Deklarationen" seien ist einfach Quatsch.

    Ok, sorry, mein dicker Patzer. Erstens cookies Post nicht zu Ende gelesen, zweitens blöd formuliert. Natürlich beinhaltet eine Definition immer auch eine Deklaration.

    Hacker schrieb:

    Sind das nicht Initialisierungen, die eine Definition implizieren die wiederum eine Deklaration impliziert?

    Es gibt keine alleinstehenden Initialisierungen - in den meisten Fällen sind es aber tatsächlich Definitionen mit (expliziter) Initialisierung, abgesehen von Fall d), wo keine Initialisierung vorliegt. Bei alledem sei natürlich außen vorgelassen, dass ungültiger Code ungültiger Code bleibt und deshalb weder eine Deklaration, noch eine Definition oder sonstwas sein kann.


Anmelden zum Antworten