![]() |
-- in C & Pointer
Hallo,
Ich schreib grad mein erstes großes C Programm (XML Pharser ;-) ) Dabei habe ich folgendes int *Pfad_Tag_Nr; so jetzt weiß ich einenen Wert zu und dann kommt die Zeile *(Pfad_Tag_Nr)--; Ich will den Wert auf den der Pointer zeigt um eins erniedrigen, leider kommt da ein Pfusch raus. (Glaub die Adresse wird um eins erniedrigt) Mit *(Pfad_Tag_Nr)=*(Pfad_Tag_Nr)-1; gehts. Meine Frage is jetzt: Wenn *(Pfad_Tag_Nr)--; nicht das gleiche wie *(Pfad_Tag_Nr)=*(Pfad_Tag_Nr)-1; ist, was ist dann *(Pfad_Tag_Nr)--; ausgeschrieben??? Verwende Visual Studie 2005 |
Re: -- in C & Pointer
Es geht um Operatorenprioritäten. -- hat eine höhere Priorität als der Dereferenzierungs-Operator (*), die Binäre Subtraktion - wird allerdings erst nach dem * ausgewertet.
Sprich hier wie der Parser deine Ausdrücke interpretiert:
Code:
*(p)--
wird zu *(p--) *p = *p - 1 hingegen zu (*p) = ((*p) - 1) ![]() greetz Mike |
Re: -- in C & Pointer
Also wäre das was ich will
Delphi-Quellcode:
(*(Pfad_Tag_Nr))--
|
Re: -- in C & Pointer
Zitat:
Falls der Term alleinstehend ist, kannst du die Klammern auch sparen, und das ganze so lösen:
Code:
Wobei man dann pro gespartem Zeichen 2 extra Kommentare berechnen darf :lol:
--*Pfad_Tag_nr;
greetz Mike |
Re: -- in C & Pointer
Dieser Thread ist ein Paradebeispiel dafür, wie gut C und C++ wirklich ist.
Zitat:
Frage: Wieso schreibst Du 2008 dein erstes C-Programm? Wieso nicht C#? Das ist eine schöne Sprache. Fast so hübsch wie Delphi. |
Re: -- in C & Pointer
Zitat:
Und diese Sprache hatte nicht ohne Grund so viel Erfolg. Auch heute noch wird es bei der maschinennahen Entwicklung genutzt. |
Re: -- in C & Pointer
Zitat:
Nee, is schon klar, war nur etwas Polemik und OT von mir. Genug jetzt. :zwinker: |
Re: -- in C & Pointer
Zitat:
|
Re: -- in C & Pointer
Zitat:
Wie Du schon sagtest: In den richtigen Händen ist C eine total geil kompakte und auch sichere Sache. Leider gibt es nicht so viele 'richtige Hände'.... Das gilt aber auch für (fast) jede andere Sprache. Was ich hier blöd finde, ist die Mehrdeutigkeit (im Verständnis) eines Ausdruckes wie *p--. Ich meine, das ist die kürzeste Klausurfrage in der IT: Zitat:
|
Re: -- in C & Pointer
Zitat:
|
Re: -- in C & Pointer
Zitat:
Zitat:
Insofern ist es nicht Glaubens-, sondern Bedarfsfrage. Die meisten meiner Programme bestehen aus zwei getrennten Teilen: die eigentliche Implementation, die in C++, sowie das GUI, das mit der VCL in C++Builder (also gewissermaßen Delphi mit C++-Syntax) geschrieben ist. Und das ist gut so. Buffer-Overflows und die anderen üblichen Bugs können in C++ übrigens mit ausreichender Erfahrung und den richtigen Werkzeugen (z.B. das in C++Builder enthaltene CodeGuard) genausogut umschifft oder gefunden werden wie in Delphi. Und wer die Sprache C++ richtig einsetzt (also intensiv Gebrauch von Stackobjekten, Smart-Pointers, Containern, Templates etc. macht und die direkte Benutzung von Zeigern, C-Bibliotheksfunktionen, new und delete meidet), produziert auch schon aus Prinzip keine Buffer-Overflows, Lecks oder dergleichen. Nur das berüchtigte C/C++, also eine unausgegorene Mischung aus prozeduraler, zeigerorientierter C- sowie objektorientierter C++-Programmierung, ist eine ernsthafte Gefahr. Zitat:
Der findige Programmierer lernt diese Tabelle vor Klausuren auswendig und benutzt im realen Leben immer Klammern ;) Edit: Typographie :( |
Re: -- in C & Pointer
Zitat:
|
Re: -- in C & Pointer
wie bereits erwähnt wurde wird c bei systemnaher Programmierung verwendet und hat dort auch seine Daseinsberechtigung. Wenn man einen Microcontroller mit 60 kb Arbeitsspeicher hat wovon sich das Betriebssystem auch etwas abzweigt muss man einfach auf jedes einzelne Bit achten und da ist selbst c++ schon überdimensioniert (weil einfach durch die Objecte overhead entsteht der nicht gebraucht werden kann).
Und das dieses Beispiel ein Paradebeispiel dafür ist wie gut C wirklich ist finde ich an der Stelle unpassend. Vor 1 bis 2 Tagen hatten wir hier in der dp in Delphi mal wieder das Problem das bei einer bedingten Abfrage mit and die Klammerung vergessen wurde. Und schuld das es ohne Klammern nicht lief war auch dort die Priorität der operatoren. Es hat also rein gar nichts mit der Programmiersprache c zu tun sondern einfach damit das leute die wenig/selten mit operatoren rum hantieren nicht dran denken das es dort prioritäten zu beachten gilt. Und das c nur noch selten gebraucht wird weil die meisten Maschienen ausreichend Leistung haben um Objectoverheader ignorieren zu können halte ich für falsch. Es ist einfach nur der erste Eindruck der meisten Leute hier im Forum die hauptsächlich mit PC's zu tun haben und somit Anwendungsentwicklung auf großen Maschienen betreiben. Aber wenn man sich im eigenen Umfeld mal umschaut sieht man einen Drucker, eine Microwelle, einen Herd, eine Waschmaschiene, einen Boardcomputer im Auto etc. wo überall Microcontroller verwendet werden und Speicher knapp ist weil auf jeden Cent geachtet wird. |
Re: -- in C & Pointer
Manche Microwellen laufen mit Java.
Aber stimmt schon, C hat ne Daseinsberechtigung. Aber C für Anwendungsentwicklung auf PC / High-Level zu benutzen halte ich für nicht mehr zeitgemäß. Einfach zu unproduktiv. |
Re: -- in C & Pointer
Zitat:
Zitat:
Daher ist C wirklich nicht geeignet, Anfängern das Coden beizubrigen. Das ist so, als ob man mit einem 70er Jaguar das Autofahren lernt. Ohne Ausbildung als Mechaniker läuft da gar nix. Aber schick ist so ein Teil schon. Wenn's fährt... |
Re: -- in C & Pointer
Zitat:
also ganz ausgestorben ist die sprache mit den 16 befehlen noch nicht... ;-) |
Re: -- in C & Pointer
Moin Grenzgaenger,
also WinWord und Excel (2003 und 2007) wurden mit MS Visual C++ 7.0 erstellt... |
Re: -- in C & Pointer
Zitat:
aber auch ich vermute, dass das eine oder andere C++ feature einfloss. der code selbst basiert auf C. aber C und C++ nennt man ja zwischenzeitlich in einem atemzug C/C++, da es ja zwischenzeitlich kaum mehr einen reinen C compiler mehr gibt. grüsse und noch einen schönen samstag GG |
Re: -- in C & Pointer
Naja, zwischen C und C++ is doch noch der Unterschied OOP. Ich mag C++ auch nicht wirklich, aber es is zumindest produktiver einzusetzen als C.
|
Re: -- in C & Pointer
Zitat:
cheers... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 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