Gamestudio Links
Zorro Links
Newest Posts
Help with plotting multiple ZigZag
by degenerate_762. 04/30/24 23:23
M1 Oversampling
by 11honza11. 04/30/24 08:16
Trading Journey
by howardR. 04/28/24 09:55
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
Eigenwerbung
by jcl. 04/26/24 11:08
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (degenerate_762, AndrewAMD), 877 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
wandaluciaia, Mega_Rod, EternallyCurious, howardR, 11honza11
19049 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 2 of 2 1 2
Re: 0 == NULL? [Re: Scorpion] #228490
09/19/08 21:42
09/19/08 21:42
Joined: Jul 2008
Posts: 894
T
TechMuc Offline
User
TechMuc  Offline
User
T

Joined: Jul 2008
Posts: 894
(I'm really intersted: why do you actually need the strict difference between 0 and NULL? any important reason?)

definition of NULL in stdlib.h (how it is defined in c++ and c)

Quote:

#ifndef NULL
#ifdef __cplusplus
#define NULL 0 //NULL ist das gleiche wie 0
#else
#define NULL ((void *)0) //0 pointer
#endif
#endif


answer to the same question in an english forum

(http://bytes.com/forum/thread61514.html)
Quote:

In 'C', NULL is defined like this:

#define NULL (void*)0


In C++, NULL is defined like this:

#define NULL 0


If you try and initialise a pointer to a type with a pointer to void, you'll
get errors with a C++ compiler:

int* p = (void*)0; // OK in 'C*, error in C++
int* p = 0; // OK in C++, error in 'C'


C++ specifically forbids the 'C' style definition of NULL. Why? Perhaps
assigning a 'pointer to a type' to the 'C' style NULL could be considered
similar to assigning a 'pointer to a derived type' to a 'pointer to base
type', which would be wrong. Then again, is assigning a 'pointer to a type'
to the value zero is any more correct; besides which 'void' is not the base
type of all types? You could say that it's a bit of shambles (I do). Then
again, C++ isn't a real OO language; it's a baggage of OO extensions to 'C'
which is, essentially, just portable assembler. To do the job properly, you
would need a language that had a common base type for all types and Null
instances of every derived type.




just search the web.. you'll get a lot of answers smile
http://www.google.de/search?rlz=1C1CHMG_deDE291&sourceid=chrome&ie=UTF-8&q=NULL+C%2B%2B

PS: Again: why do you really care about the difference of NULL and 0?

Last edited by TechMuc; 09/19/08 21:49.
Re: 0 == NULL? [Re: TechMuc] #228493
09/19/08 21:49
09/19/08 21:49
Joined: Jan 2007
Posts: 1,619
Germany
Scorpion Offline OP
Serious User
Scorpion  Offline OP
Serious User

Joined: Jan 2007
Posts: 1,619
Germany
*ganz schnell alle NULLen in den Keller verbann und nie wieder raushol*

imo wäre es aber trotzdem sinnvoll zu sehen ob einer variable ein 'benutzbarer' Wert zugewiesen wurde oder nicht.(das war jetzt kein 'neues-feature-vorschlag') In meinem Fall bin ich jetzt auf eine negative Zahl ausgewichen...aber auch das ist ja nicht immer möglich

Re: 0 == NULL? [Re: Scorpion] #228495
09/19/08 21:52
09/19/08 21:52
Joined: Jul 2008
Posts: 894
T
TechMuc Offline
User
TechMuc  Offline
User
T

Joined: Jul 2008
Posts: 894
Was meinst du mit "benutzbarer Wert"? Magst du checken ob ein Pointer initialisiert wurde? Also z.B.

int*a = 0;

? Falls ja kannst du if(a != 0) oder if (a != NULL) beides abfragen.. Zumindest in C++ gibt sich das nichts.

Last edited by TechMuc; 09/19/08 21:53.
Re: 0 == NULL? [Re: TechMuc] #228501
09/19/08 22:23
09/19/08 22:23
Joined: Jan 2007
Posts: 1,619
Germany
Scorpion Offline OP
Serious User
Scorpion  Offline OP
Serious User

Joined: Jan 2007
Posts: 1,619
Germany
nicht direkt...uhm.. als beispiel: du hast eine variable für ein Objekt. Solange dieses Objekt nicht geladen ist ist sie 'undefiniert'. Sobald es dann geladen wurde, bekommt diese einen zu speichernden Wert (z.B. ID, oder eine vom Benutzer festgelegten Wert etc.). Dieser könnte dann auch 0 sein, was so nicht geht.
Da wenn jetzt die variable 0 ist könnte das a)undefiniert sein oder b)den Zahlenwert 0 darstellen.

Natürlich kann man das mit einer 2. Variable umgehen oder u.U. auch mit einer dezimalstelle etc. Das ist aber schade, da bei floats auch 'unendlich' oder 'NaN' angegeben werden kann.

Re: 0 == NULL? [Re: Scorpion] #228535
09/20/08 09:40
09/20/08 09:40
Joined: Sep 2003
Posts: 929
Spirit Offline

Moderator
Spirit  Offline

Moderator

Joined: Sep 2003
Posts: 929
Not to be nitpicking but NULL is not the same as nil or null, nil is a real type, while NULL is a #define. So, NULL == 0 but NULL != nil != null.

For checking if a pointer is set to something you can use NULL for initializing it:

void* ptr = NULL;

and then:

if (ptr) // true if ptr was set to something, otherwise false
...

Re: 0 == NULL? [Re: Spirit] #228541
09/20/08 10:49
09/20/08 10:49
Joined: Sep 2003
Posts: 9,859
F
FBL Offline
Senior Expert
FBL  Offline
Senior Expert
F

Joined: Sep 2003
Posts: 9,859
NULL ist eigentlich dafür gedacht, um Poitner zu leeren bzw. leere Pointer zu erkennen. Da man bei Pointern mit Adressen abreitet, mcht es Sinn, eine Art leere Adresse (was in Realität einfach Adresse 0x00000000 ist) irgendwie greifbar zu machen.

Wennman bei einer Variablen einen Leerwert, Fehlerwert etc haben will, baut man sich halt einfach ein define.

#define ERROR -1
#define EMPTY 0

was auch immer...

Page 2 of 2 1 2

Moderated by  aztec, Spirit 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1