2 Fragen zu Arrays + Funktionen



  • ghorst schrieb:

    ansonsten macht c++ null unterschied. ob du nun int[] oder *int zu dem ding sagst, ist gleich.

    Arrays sind keine Lvalues. Zeiger schon. Siehe drakon 😉



  • Speedy_92 schrieb:

    Was ich noch nicht so ganz verstehe ist, warum man bei einem Array als Parameter keine Referenz machen muss um es zu ändern.

    Verständlich gesagt: Bei der Übergabe eines Arrays ist es so als würdest du einen Zeiger übergeben, deswegen weiß die Funktion, wo sich das Array im Speicher befindet und kann es somit modifizieren.



  • Vielen Dank. Alles klar geworden 🙂



  • Du musst dir bei der Übergabe eines Arrays immer die Dimension als zusätzlichen Parameter übergeben (oder du arbeitest mit konstanten Werten), da sizeof innerhalb der Funktion nicht das gewünschte Ergebnis erzielt, weil die Grösse des Zeigers ermittelt wird.

    ➡ Wieder ein Grund für std::vector 😉



  • Nexus schrieb:

    Du musst dir bei der Übergabe eines Arrays immer die Dimension als zusätzlichen Parameter übergeben (oder du arbeitest mit konstanten Werten), da sizeof innerhalb der Funktion nicht das gewünschte Ergebnis erzielt, weil die Grösse des Zeigers ermittelt wird.

    ➡ Wieder ein Grund für std::vector 😉

    Naja... ich möchte ein Feld erstellen. Damit möchte ich hinterher arbeiten, also z.B. mit WINAPI zeichnen... Deshalb finde ich es in diesem Moment schöner mit einer Konstanten Dimension zu arbeiten.



  • Ja, das ist schon okay.

    Behalte einfach den vector im Hinterkopf, falls du einmal dynamische Arrays benötigst 😉



  • Speedy_92 schrieb:

    Nexus schrieb:

    Du musst dir bei der Übergabe eines Arrays immer die Dimension als zusätzlichen Parameter übergeben (oder du arbeitest mit konstanten Werten), da sizeof innerhalb der Funktion nicht das gewünschte Ergebnis erzielt, weil die Grösse des Zeigers ermittelt wird.

    ➡ Wieder ein Grund für std::vector 😉

    Naja... ich möchte ein Feld erstellen. Damit möchte ich hinterher arbeiten, also z.B. mit WINAPI zeichnen... Deshalb finde ich es in diesem Moment schöner mit einer Konstanten Dimension zu arbeiten.

    Das eine hat mit dem anderen doch nichts zu tun. Du kannst ja auch aus einem std::vector mit der WinAPI zeichnen. Wo ist das Problem?
    Zusätzlich ist std::vector um einiges komfortabler.
    Ansonsten gibt es auch nocht boost::multiarray:
    http://www.boost.org/doc/libs/1_36_0/libs/multi_array/doc/index.html



  • Also mit dem Vector habe ich mich schon sehr gut angefreundet 🙂
    Beim Textdateien-Auslesen ist er mir immer sehr hilfreich 🤡



  • drakon schrieb:

    Speedy_92 schrieb:

    Nexus schrieb:

    Du musst dir bei der Übergabe eines Arrays immer die Dimension als zusätzlichen Parameter übergeben (oder du arbeitest mit konstanten Werten), da sizeof innerhalb der Funktion nicht das gewünschte Ergebnis erzielt, weil die Grösse des Zeigers ermittelt wird.

    ➡ Wieder ein Grund für std::vector 😉

    Naja... ich möchte ein Feld erstellen. Damit möchte ich hinterher arbeiten, also z.B. mit WINAPI zeichnen... Deshalb finde ich es in diesem Moment schöner mit einer Konstanten Dimension zu arbeiten.

    Das eine hat mit dem anderen doch nichts zu tun. Du kannst ja auch aus einem std::vector mit der WinAPI zeichnen. Wo ist das Problem?
    Zusätzlich ist std::vector um einiges komfortabler.
    Ansonsten gibt es auch nocht boost::multiarray:
    http://www.boost.org/doc/libs/1_36_0/libs/multi_array/doc/index.html

    Naja... nur irgendwie finde ich es bei Feldern einfach schöner 🤡



  • Speedy_92 schrieb:

    Naja... nur irgendwie finde ich es bei Feldern einfach schöner 🤡

    Plus fehleranfälliger und weniger komfortabel 😉


Anmelden zum Antworten