Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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...

Geschrieben

@ 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^^

Geschrieben
@ 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. :D)

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. ;)

Geschrieben
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++.
Geschrieben
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.

Geschrieben
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 Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...