![]() |
(Erledigt)[C++] "*cook++"?/des Verschlüsselung/vnc
Heute mal eine Frage an die C-Spezies unter euch:
Was bedeutet der Zugriff auf *cook++ ? Ok, den Stern kapiere ich noch. Der dereferenziert den Pointer und ich bekommen den Inhalt. Aber auf was wird das ++ angewendet? Auf den zurückgegebenen Wert oder auf den Pointer selbst? Ich brauch das, weil ich grad eine C-Datei (d3des-Verschlüsselung) in Pascal übersetze. Wenn ihr mir schön helft, bekommt ihr dann die Unit. *erpress* ;) |
Re: [C++] Was bedeutet "*cook++"?
auf den Pointer, nach dem dereferenzieren
|
Re: [C++] Was bedeutet "*cook++"?
mann ... das ging ja schnell ... danke!
|
Re: [C++] Was bedeutet "*cook++"?
Auf den zurueckgegebenen Wert wird ein Postincrement nie angewendet.
(*cook)++ und *cook++ liefern den gleichen Wert. Bei (*cook)++ ist aber danach *cook inkrementiert, waehrend *cook++ die Referenz (den Pointer) inkrementiert. |
Re: [C++] Was bedeutet "*cook++"?
Und noch was zur Info:
Code:
c = 5;
a = c++; // a = 5; c = 6;
Code:
c = 5;
a = ++c; // a = 6; c = 6; Ist ++ NACH der Variablen, so wird erst der Wert der Variablen zurückgegeben, dann erhöht. Steht das ++ VOR der Variablen, so wird sie erst erhöht und dann der Wert zurückgegeben. |
Re: [C++] Was bedeutet "*cook++"?
Zitat:
Code:
for (int i=0; i < 10; i++)
;
Code:
Ich kenne es von anderen Compilern auf anderen Systemen, das man mit diesem Unterschied den Zeitpunkt des Inkrement steuern konnte. Erste Schleife lief von 0 bis 9, zweite von 1 bis 9.
for (int i=0; i < 10; ++i)
; Vielleicht könnten zu diesem Punkt noch andere was sagen, weil es früher wichtig war und es mich recht erstaunt hatte das der BCB keinen Unterschied macht. Gab es da in den "neueren" Standards Änderungen?? |
Re: [C++] Was bedeutet "*cook++"?
Zitat:
Ein anderes Verhalten als ein Durchlaufen von 0 bis 9 würde ich ehrlich gesagt nicht erwarten. Laut C99-Rationale war für C89 die Bearbeitung des letzten for-Arguments immer der letzte Schritt in einem Schleifendurchlauf. Eine for-Schleife wurde in eine while-Schleife umgeschrieben, die so aussah:
Code:
Es würde also jeweils eine seperate Anweisung "++i" oder eine separate Anweisung "i++" in der letzten Zeile der while-Schleife stehen.
for (arg1; arg2; arg3)
list; --------- arg1; while (arg2) { list; arg3; } Offensichtlich scheinen die von dir angesprochenen Compiler je nachdem, op pre- oder post-increment verwendet wird, mal 'ne while- und mal 'ne do-Schleife draus zu basteln. IMHO eigenartiges Verhalten. Da du mit der Deklaration der Variable i innterhalb des Schleifenkopfes schon C99 implizierst, habe ich mal ein wenig im Standard gelesen: Zitat:
Ich würde sagen, die von dir angesprochenen Compiler sind leicht defective oder implementieren irgendein anderes oder gar kein Standard-C. |
Re: [C++] Was bedeutet "*cook++"?
Alles klar, gut zu wissen. Der entsprechende Compiler war soweit ich mich noch erinnere Turbo C 1.0 auf dem Atari. Auch betraf es noch einen anderen Compiler, wüsste aber nun nicht mehr genau welcher das war.
Und das in dem Beispiel i in der Schleife deklariert wurde kommt nur daher, dass ich es heutzutage so schreibe, daher nicht wundern. Damals wurde i natürlich früher definiert. Vielen Dank für die Informationen und die Arbeit! |
Re: [C++] Was bedeutet "*cook++"?
Zitat:
Zitat:
|
Re: (Erledigt)[C++] "*cook++"?/des Verschlüsselung
Liste der Anhänge anzeigen (Anzahl: 1)
Danke danke ... und wie versprochen gibts hier die fertige Unit. Sie is dazu gedacht um das VNC-Passwort zu ver-/entschlüsseln.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz