Java in C ???



  • Hallo Leute.

    In Java gibts sowas:

    // Deklaration:
    public int nAmount;
    public boolean[] arResults;
    
    // Allokierung:
    arResults = new boolean[nAmount];
    

    Wie kann ich das am besten in C darstellen?
    😕 😕 😕



  • RunSeb schrieb:

    Hallo Leute.

    In Java gibts sowas:

    // Deklaration:
    public int nAmount;
    public boolean[] arResults;
    
    // Allokierung:
    arResults = new boolean[nAmount];
    

    Wie kann ich das am besten in C darstellen?
    😕 😕 😕

    Wie wäre es wenn du es auch im C Forum und nicht im C++ Forum fragst?

    Grundsätzlich kannst du öffentliche Variablen aber in C entweder als lokale Variablen oder globale Variablen darstellen und ggf. in Strukturen organisieren. Statt new nimmt man z.b. malloc und zusätzlich muss man (da es keinen GC gibt) den Speicher noch mit free freigeben. Arrays lassen sich ähnlich verwenden.

    cu André



  • Ich meine eigentlich C++, sorry.
    Global oder lokal spielt erstmal keine Rolle.



  • std::size_t num_bool;
    bool * array;
    
    array = new bool[num_bool];
    


  • RunSeb schrieb:

    Ich meine eigentlich C++, sorry.
    Global oder lokal spielt erstmal keine Rolle.

    Okay, in C++ bist du an Java sogar noch näher dran, musst aber bei der Speicherallozierung und Freigabe dennoch aufpassen (Ich ergänze mal etwas, das mir bei darthdespotism noch fehlte). Bei Arrays sogar doppelt:

    bool* a = new bool;     // Legt einen Boolean dynamisch an
    bool* b = new bool[10]; // Legt ein Array von 10 Booleans dynamisch an
    delete a;   // Löscht den dynamisch allozierten Speicher von a
    delete[] b; // Löscht den dynamisch allozierten Speicher von b
    

    Dynamische Speicherallozierung in C++ also mit new/delete, bei Arrays aber new[]/delete[]!

    Eine bessere Alternative sind aber zumeist die Containerklassen der STL (wie z.B. std::vector).

    cu André



  • asc schrieb:

    Eine bessere Alternative sind aber zumeist die Containerklassen der STL (wie z.B. std::vector).

    das würde sogar mehr an das java-beispiel herankommen als die version mit new. besser noch wäre wohl std::tr1::array.



  • Okay, in C++ bist du an Java sogar noch näher dran

    anderherum ,du meinst Java ist nähr an C++ als C orientiert;) :xmas1:



  • queer_boy schrieb:

    asc schrieb:

    Eine bessere Alternative sind aber zumeist die Containerklassen der STL (wie z.B. std::vector).

    das würde sogar mehr an das java-beispiel herankommen als die version mit new. besser noch wäre wohl std::tr1::array.

    std::tr1::array verwendet doch die arraygröße als Template-Parameter. Dann kannst du das schlcht zur Laufzeit bestimmen

    std::vector<> hatt auch eine schöne Templatespezialisierung für bool AFAIK


Anmelden zum Antworten