Ist die Zeigerzuweisung so korrekt?
-
Hellowa,
ich hätte da gerne mal ein Problem.
ich habe in einen Beispielcode. Der sieht so aus (Auschnitt)
... WOMDataDescriptor dataDesc1; WOMDataDescriptor dataDesc2; ... signed char* dataArr1 = new signed char[ nbrElements ]; ... signed char* dataArr2 = new signed char[ nbrElements ]; ... [cpp]signed char const* dataPTR1 = dataArr1; signed char const* const dataEndPTR1 = dataArr1 + dataDesc1.overallSize;
...
signed char const* dataPTR2 = dataArr2;
signed char const* const dataEndPTR2 = dataArr2 + dataDesc1.overallSize;
...
[/cpp]Die Arrayzuweisungen habe ich in eine Funktion gepackt:
PrepareDataArray( signed char const* dataPTR, float* curveData ) { signed char const *const dataEndPTR = dataPTR + dataDesc1.overallSize; ... }
der Aufruf dann so...
signed char* gDataArray1 = new signed char[ bytesSize ]; signed char* gDataArray2 = new signed char[ bytesSize ]; ... PrepareDataArray( gDataArray1, floatArray ); ...
oder mit anderen Worten ist
signed char const* dataPTR1 = dataArr1]; signed char const* const dataEndPTR1 = dataArr1 + dataDesc1.overallSize;
dass das gleiche wie...
signed char const* dataPTR1 = dataArr1; signed char const* const dataEndPTR1 = dataPTR1 + dataDesc1.overallSize;
?
-
Das ist...was soll das sein? C kann es nicht sein, weil es in C kein new gibt. In C++ ist es technisch zwar ein korrektes Programm, aber kein C++-Programmierer würde das jemals so machen.
FrankTheFox schrieb:
oder mit anderen Worten ist
signed char const* dataPTR1 = dataArr1]; signed char const* const dataEndPTR1 = dataArr1 + dataDesc1.overallSize;
dass das gleiche wie...
signed char const* dataPTR1 = dataArr1; signed char const* const dataEndPTR1 = dataPTR1 + dataDesc1.overallSize;
?
Was soll da der Unterschied sein, außer das ] am Ende der ersten Zeile, welches da nur ein Schreibfehler sein kann?
-
Ok,
ja ich hatte mich nur über die Zuweisung des dataPTR1 mit dataArr1 und das in der nächsten Zeile dataArr1 genutzt wird. Weil dort auch genausogut dataPTR1 stehen kann.
Danke.
-
FrankTheFox schrieb:
Danke.
Die Anmerkung mit den Sprachen ist durchaus wichtig: Wenn du C machen willst, dann mach auch C, das man mit einem C-Compiler übersetzen kann*. Und wenn du C++ machst, dann versuch darin kein C zu machen, sondern nutze die Mittel von C++. So wie es jetzt ist, hast du alle Nachteile von C++ (nicht sehr viele, aber ein paar kann man sich aus den Fingern saugen), aber keinen der Vorteile.
*: Du kannst aber versuchen, C zu machen, dass man auch mit einem C++-Compiler übersetzen kann. Da spricht nicht viel dagegen, außer, dass es stellenweise etwas komisch aussieht.
-
Hi,
ja das sehe ich genauso. In Zukunft werden alle Programme so umgesetzt, das sie wenn C++ auch tatsächlich C++ sind und keine C-Leichen vorhanden sind. Da aber altes Projekt im Augeblick leider so ein durcheinander.
-
Das sieht jetzt wieder nach einer Grundsatzfrage C++ versus C aus!
Ich denke bei alten Programmen anders. Dort kann man sehr gut die mit C++ vermeintlich überholten Dinge belassen, wenn sie das gewünschte doch zufriedenstellend tun. Jede Umstellung bedeutet auch Zeitaufwand. Wer will die WinApi für Windows wegschmeissen, nur weil diese in C ist?