2 dimensionales, dynamisches array
-
wie kommst du auf sowas?
int wert = *(array + x * h + y);ich wäre da net so schnell draufgekommen, obwohl ich gut programmieren kann (eben andere sprachen)
ich bin eben davon ausgegangen, das die daten irgendwo im ram rumliegen und net direkt hintereinander. deswegen kam ich durcheinander. aber mittlerweile blick ich schon durch. da calloc ja den ram für sich reserviert.aber ich hätt trotzdem noch gerne ein tut für zeiger/pointer
bidddee, es würde ja auch anderen helfen (meinen kollegen)MfG Radiation 2k5
-
Hallo
auf dieser Seite oben rechts ist ein Menüpunkt namens Tutorials, das jede Mende davon anbietet. Da wird sicher auch das Thema behandelt.
bis bald
akari
-
epidemic schrieb:
Was hier oben in dem Beispiel produziert wird ist kein c++, meiner meinung nach
Ich hatte zu Beginn auch geschrieben, dass es sich hierbei um reines C handelt. VCL-typisch wäre meiner Meinung wie gesagt DynamicArray oder Set. std::vector ist ok, aber doch auch nicht BCB-spezifisch, oder?
Edit:
Radiation2K5 schrieb:
wie kommst du auf sowas?
Jahrelange Erfahrung... dann kommen auch die Tricks und Kniffe.
-
std::vector ist nicht BCB-Spezifisch... und anstelle des calloc wäre vielleicht ein new ganz witzig. Und von Pointerarithmetik in Dingen die der Compiler erledigen könnte halte ich nur beschränkt viel...
-junix
-
junix schrieb:
Und von Pointerarithmetik in Dingen die der Compiler erledigen könnte halte ich nur beschränkt viel...
Könntest du das etwas genauer beschreiben? Ich arbeite an der Uni an einem Projekt mit in dem die von mir gezeigte "Technik" recht intensiv genutzt wird.
-
junix schrieb:
std::vector ist nicht BCB-Spezifisch...
-junixJa, das ist richtig.
Dann gehört aber der ganze Thread auch woanders hin

Außerdem ist eine Lösung, die aus dem C++ standard kommt(STL) eher zu bevorzugen als eine Frameworkabhängige, oder?Ich bevorzuge schon eine Standard Lösung, frameworkunabhängig, wo es nur geht. Dann ist es egal ob ich MVC++ oder den C++ Builder verwende...
Das nur als Argument.
-
Dasd schrieb:
junix schrieb:
Und von Pointerarithmetik in Dingen die der Compiler erledigen könnte halte ich nur beschränkt viel...
Könntest du das etwas genauer beschreiben? Ich arbeite an der Uni an einem Projekt mit in dem die von mir gezeigte "Technik" recht intensiv genutzt wird.
Dann ist es aber ein C Projekt.
bei C++ ist allotieren mit new zu verwenden.Oder Deine Kollegen an der Uni kennen nur diese Technik

-
Dasd schrieb:
junix schrieb:
Und von Pointerarithmetik in Dingen die der Compiler erledigen könnte halte ich nur beschränkt viel...
Könntest du das etwas genauer beschreiben? Ich arbeite an der Uni an einem Projekt mit in dem die von mir gezeigte "Technik" recht intensiv genutzt wird.
Dann ist es aber ein C Projekt.
In C++ allokiert man mit new.Oder Deine Kollegen an der Uni kennen nur diese Technik

-
schon mal so versucht?
int m = 3; // ANZAHL DER ZEILEN. int n = 5; // ANZAHL DER SPALTEN. int **int_array; int_array = new int*[m]; // SCHRITT 1: ZEILEN EINRICHTEN for (int j = 0; j < m; ++j) int_array[j] = new int[n]; // SCHRITT 2: SPALTEN EINRICHTEN. // löschen for (int i = 0; i < m; ++i) delete[] int_array[i]; // SCHRITT 1: SPALTEN LÖSCHEN delete[] int_array; // SCHRITT 2: ZEILEN LÖSCHENaus der BCB-Hilfe
Nighthero
-
Nighthero schrieb:
schon mal so versucht?
int m = 3; // ANZAHL DER ZEILEN. int n = 5; // ANZAHL DER SPALTEN. int **int_array; int_array = new int*[m]; // SCHRITT 1: ZEILEN EINRICHTEN for (int j = 0; j < m; ++j) int_array[j] = new int[n]; // SCHRITT 2: SPALTEN EINRICHTEN. // löschen for (int i = 0; i < m; ++i) delete[] int_array[i]; // SCHRITT 1: SPALTEN LÖSCHEN delete[] int_array; // SCHRITT 2: ZEILEN LÖSCHENaus der BCB-Hilfe
Nighthero
Ich glaube nicht daß bei diesem Konstrukt der delete sauber durchgeführt wird
Vielleicht überlegst Du es nochmal in Ruhe

-
Ich sehe keinen Fehler

-
Sorry, eine Zeile habe ich übersehen.
Ist schon richtig.
Trotzdem würde ich von solchen Konstrukten abraten.STL gibt doch alles erdenkliche her, oder?
Selbst Meyers(und er muß es schließlich wissen) empfiehlt Zeiger dort zu meiden wo es nur geht.
-
Ok, aber als alter Zeigerfetischist hatte ich halt mit so einer Möglichkeit geliebäugelt.

Nighthero