Anfängerfrage



  • Hallo,

    ich habe begonnen C zu lernen und bin auf einen Teil gestossen, für das ich keine Erklärung finde. Auch im Buch nicht 😉 Ich weiß, was eine Funktion bzw. wie man sie anwendet, aber damit kann ich leider nichts anfangen. Zuerst die eckigen Klammern und dann stehen nur Zahlen drinnen ohne Variablenzuweisung? Kann mir jmd einen Tipp geben unter welchen Begriff ich das nachlesen könnte? Danke!!

    static int test[] = {
    0, 0, 0, 0, 0, 0, 0, 0, 0,8, 10, 12, 16, 20, 25, 32, 40, 50, 64,
    80, 101, 128, 161, 203, 256, 322, 406, 512, 645, 812, 1024, 1290,
    1625, 2048, 2580, 3250, 4096, 5060, 6501, 8192, 10321, 13003, 16384,
    20642, 26007, 32768, 41285, 52015, 65536, 82570, 104031, 131072,
    165140, 208063, 262144, 330280, 416127, 524287, 660561, 832255,
    1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304,
    5284491, 6658042, 8388607, 10568983, 13316085, 16777216 };



  • dummy2k schrieb:

    unter welchen Begriff ich das nachlesen könnte?

    ➡ Array



  • Bashar schrieb:

    dummy2k schrieb:

    unter welchen Begriff ich das nachlesen könnte?

    ➡ Array

    danke! Ist das aber eher nicht ein schlechter Programmierstil oder üblich? Mir kommt das etwas seltsam vor, wegen einem Array das außerhalb einer Funktion zu schreiben. Oder soll es so sein, wenn viele Funktionen auf den gleichen Array zugreifen? Danke! 🙂



  • Das kann schon ok so sein, kommt darauf an welchen Zweck das Array erfüllen soll. Dass das nicht "const" ist deutet aber eher auf was Unschönes hin. 🙂



  • Soweit ich das überblicke, handelt es sich hier um magische Zahlen für ein Dateiformat namens XTC; es scheint sich um Molekularbiologie zu drehen. In GROMACS findet man die selbe Reihe unter dem Namen "xtc_magicints".

    Die werden mit aller Wahrscheinlichkeit const verwendet werden. Natürlich wäre es hübscher, sie auch so zu deklarieren, damit der Optimierer sie in rodata ablegen und Zugriffe wegoptimieren kann.



  • dummy2k schrieb:

    Oder soll es so sein, wenn viele Funktionen auf den gleichen Array zugreifen? Danke! 🙂

    Das hört sich nach globalen Variablen an (das Array ist überall im Programm nach seiner Definition/Deklaration sichtbar).
    Globale Variablen sind meistens Müll und lassen auf mangelndes Programmdesign schließen. Definiere sowas main-lokal und übergib es an die fraglichen Funktionen als Parameter.



  • Danke für alle Antworten! Ich hätte bitte noch eine Anfängerfrage:

    Ich verstehe nicht den Sinn der Nutzung der Speicheradresse einer Variablen, anstatt einfach den Variablennamen selbst. Wieso nimmt man nicht einfach den Variablennamen? Weil man vielleicht von überall auf den Inhalt zugreifen kann wie im Sinne von globalen Variablen? Macht es den Code nicht irrsinnig schwer lesbar? Oder hab ich das falsch verstanden? 😕 🙄 Danke im voraus!



  • dummy2k schrieb:

    Danke für alle Antworten! Ich hätte bitte noch eine Anfängerfrage:

    Ich verstehe nicht den Sinn der Nutzung der Speicheradresse einer Variablen, anstatt einfach den Variablennamen selbst. Wieso nimmt man nicht einfach den Variablennamen? Weil man vielleicht von überall auf den Inhalt zugreifen kann wie im Sinne von globalen Variablen? Macht es den Code nicht irrsinnig schwer lesbar? Oder hab ich das falsch verstanden? 😕 🙄 Danke im voraus!

    ich nehmme an, du meinst zeiger. ein zeiger "zeigt" auf die speicheradresse einer variablen und hat einen variablennamen.



  • Schwachfug.
    Ein Zeiger zeigt nicht auf eine Adresse, ein Zeiger beinhaltet eine Adresse auf Daten. Eine Dereferenzierung des Zeigers interpretiert die Daten ab der Adresse in einer definierten Form.



  • Wutz schrieb:

    Schwachfug.
    Ein Zeiger zeigt nicht auf eine Adresse, ein Zeiger beinhaltet eine Adresse auf Daten. Eine Dereferenzierung des Zeigers interpretiert die Daten ab der Adresse in einer definierten Form.

    ah, das grunzvieh ist wieder voll in seinem element.
    http://de.wikipedia.org/wiki/Anf%C3%BChrungszeichen



  • Wer Zeiger nicht verstanden hat und wild nicht irgendwelchen Adressaussagen durcheinanderbringt, hat C nicht verstanden. Das ändern auch ständige Wiederholungen desselben pubertären Dorftrottelgeplappers nicht.


Anmelden zum Antworten