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.

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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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