Kommentare
-
Sehr, sehr gut! thumbs up
-
@JoernLoviscach Sicher mag etwas "Antikes" der Grund sein C/C++ zu benutzen, allerdings sollte das wirklich als Ausnahme angesehen werden und nicht als die Regel. Sonst kommt man nie über die Programmierstandards der 80er Jahre hinaus, und das fände zu mindestens ich traurig und beschämend.
-
@LCIDFire Der C-Standard sagt: "Object: region of data storage in the execution environment, the contents of which can represent values". In diesem Sinn kennt C auch Objekte. C ist aber allerdings eingebauter Unterstützung für Klassen, Ableitungen und Polymorphie keine objektorientierte Sprache.
-
@LCIDFire Das ist nicht korrekter als sizeof(a) / sizeof(int), sondern nur sicherer (weil man bei Änderung des Typs von a anderswo im Code nicht vergessen kann, das int zu ändern). Aus didaktischen Gründen würde ichs aber erstmal bei sizeof(a) / sizeof(int) belassen, weil es so schon kompliziert genug ist.
-
@LCIDFire Wenn der C++-Compiler sowas schon kann. So lange gibts std::array ja noch nicht. Viele Leute sind ja genau deshalb gezwungen, C und C++ zu schreiben, um an irgendetwas Antikem weiterzubasteln.
-
@LCIDFire ok danke,bin selbst eher der C#'ler und mache nur hobbymäßig ein bisschen reverse-engineering,also halten sich meine C(++) kenntnisse wirklich in grenzen :)
-
@thedrumify Nein, die Sprache C kennt keine Objekte.
-
@thedrumify @JoernLoviscach In C++ bitte nicht solche Grausamkeiten sondern stattdessen std::array verwenden. Danke.
-
@NTStreppel @JoernLovisach Korrekter ist: sizeof(a) / sizeof(*a)
-
@MrSomefoo Ja, wenn (wie im vorgeführten Beispiel) a tatsächlich als Array und nicht über malloc bzw. in C++ über new angelegt ist und wenn der Compiler das noch nachvollziehen kann, also das a nicht zuvor aus einer Funktion zurückkommt o.ä. (wodurch es auch wieder nur ein nackter Zeiger sein müsste). Ansonsten siehe meine alte Antwort an NTStreppel.
-
@NTStreppel In C auch, aber das hilft nicht in einer Funktion, an die man das Array übergibt. Der Compiler weiß da nicht, wie groß das Array beim Aufruf der Funktion tatsächlich ist. Das sizeof in C ist vor allem dazu gedacht, die richtige Menge an Speicher reservieren zu können.
-
in c++ kann man doch auch mit sizeof(arrayvar) arbeiten,oder?
-
@thedrumify In C++ kann man z.B. das Template vector nehmen. Da gehts. In JAva, JavaScript, C# sowieso.
-
und in den Folgesprachen?!
-
@thedrumify Leider nicht.
-
Gibt es in C kein x.length() wie in Java?
9m 43sLänge
Liste aller Videos, samt Suchfunktion: http://www.j3L7h.de/videos.html