Veröffentlicht 2. März 200817 j Ich kenne mich mit der C-Programmierung noch nicht so gut aus. Ich möchte gerne wissen, wie ich den Inhalt einer Variable löschen kann.
2. März 200817 j Dann fangen wir doch mal das lustige Rästelraten an. char deinVariablenName; deinVariablenName = '\0';
2. März 200817 j Du kannst den Inhalt nicht "zurücksetzten" weil es dafür keinen Standardwert gibt. Oft ist es so 0 oder NULL als leer gilt, aber in vielen Fällen macht das natürlich auch keinen Sinn weil die 0 gebraucht wird. Wenn du die Variable für deinen Programmablauf irgendwie "zurücksetzten" willst must du dir einen Wert überlegen der dafür passend ist und diesen dann einfach zuweisen. Das \0 oben ist einfach nur ein Steuerzeichen das für 0 (also nicht '0') steht und in C normalerweie das Ende eines Strings markiert...
6. März 200817 j ich mach das immer so: char foo; foo = ' '; is zwar net "zurückgesetzt" aber, wenn man's irgendwo anhängt wirds net sichtbar und sieht aus wie leer
10. März 200817 j @ TDM ...was auf der Konsole nach nem Zeilenumbruch dann ja das gleiche wäre. Ich mach des, weil cFoo=NULL;immer ne Warung gibt :/ und auf prepros en masse hab ich kein bock^^
10. März 200817 j @ TDM ...was auf der Konsole nach nem Zeilenumbruch dann ja das gleiche wäre. Schon... aber gelöscht heißt bei mir leer und nicht Leerzeichen. (Wuha, welch Wortspiel. ) Wenn ich ein char lösche dann meistens mit char t = ''; //vgl. char t = '\0' //ODER char t = 0; Ich mach des, weil cFoo=NULL; immer ne Warung gibt :/ und auf prepros en masse hab ich kein bock^^ Ja, logisch, weil #define NULL (void*) 0 Deswegen gleich direkt das Zeichenkettenendekennzeichen (0) zuweisen.
10. März 200817 j Schon... aber gelöscht heißt bei mir leer und nicht Leerzeichen. Die einzigen Variablen, die man in C oder C++ wirklich "löschen" kann, sind Zeiger, denn nur dort gibt es einen Wert, der ausdrücklich dafür reserviert ist, dass der Zeiger auf "nichts" zeigt: Der Nullzeiger. Bei allen anderen Typen ist das ein zweifelhaftes Vorhaben. Ein int oder ein char hat immer irgendeinen Wert, er kann nicht leer oder gelöscht sein. Man kann natürlich willkürlich einen der möglichen Werte herauspicken und so tun, als wäre dies ein "Leer"-Wert. Man muss sich aber dann im Klaren sein, dass man damit auf einen möglichen gültigen Wert verzichtet. Wenn man eine Leer-Kennzeichnung braucht, würde ich im Zweifel immer dazu raten, diesen Status in einer zusätzlichen Bool-Variablen zu transportieren, und nicht willkürlich einen gültigen Wert dazu missbrauchen. Ja, logisch, weil #define NULL (void*) 0 Hinweis am Rande: Das gilt nur für C, nicht für C++.
10. März 200817 j Hinweis am Rande: Das gilt nur für C, nicht für C++. Es ging doch um C, wenn ich mich nicht täusche. #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif Naja, ich hab irgendwo mal gelesen, dass NULL in C++ lt. Stroustrup untoll sei, von daher verzichte ich weitest gehend darauf.
10. März 200817 j Es ging doch um C, wenn ich mich nicht täusche. Richtig. Deswegen war der Hinweis ja auch nur am Rande Naja, ich hab irgendwo mal gelesen, dass NULL in C++ lt. Stroustrup untoll sei, von daher verzichte ich weitest gehend darauf.NULL ist in C++ ein int, was beim Überladen manchmal zu Überraschungen führen kann. Das soll im neuen Standard aber verbessert werden. Das wird jetzt aber komplett OT.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.