NULL
-
ja das ist mir klar aber in was für situationen brauche ich in c schon (void*)0 statt 0?
-
bandit90 schrieb:
ja das ist mir klar aber in was für situationen brauche ich in c schon (void*)0 statt 0?
Wenn du willst, dass sowas zu einem Fehler führt:
int var = NULL;
-
JustAnotherNoob schrieb:
nullptr wird in C++ bald übernehmen...
und das ist dann gleichbedeutend mit (void*)0, nur als extra keyword, oder was?
-
wenn du void in Funktionen meinst:
Das Schlüsselwort "void" kannst du überall dort einsetzen, wo der Compiler eine Typenangabe erwartet, du aber keinen Typ angeben willst ( Undefined ) oder kannst.
bsp:
void func_sinnlos()
{
printf("Funktionsaufruf");
}*EDIT* m vor Typenangabe entfehrnt
-
Unregistered schrieb:
Das Schlüsselwort "void" kannst du überall dort einsetzen, wo der Compiler eine Typenangabe erwartet, du aber keinen Typ angeben willst ( Undefined ) oder kannst.
bsp:
void Var;
das geht in C nicht. aber wahrscheinlich meinst du 'void pointer'.
-
+fricky schrieb:
Unregistered schrieb:
Das Schlüsselwort "void" kannst du überall dort einsetzen, wo der Compiler eine Typenangabe erwartet, du aber keinen Typ angeben willst ( Undefined ) oder kannst.
bsp:
void Var;
das geht in C nicht. aber wahrscheinlich meinst du 'void pointer'.
nein eigentlich nicht...
probiers aus
-
doch meinst du
-
Unregistered schrieb:
probiers aus
brauch ich nicht. ich denke mir einfach, dass der compiler beim anlegen eines objekts die grösse kennen muss. daher verbietet sich ein void var; von selbst.
-
sie dir das an:
#include <stdio.h>
void func_sinnlos()
{
printf("Ich bin eine sinnlose Funktion\n");
}int main()
{
func_sinnlos();
return 0;
}Compiler ma das ^^ * wie nennt man das gleich? Compilier? ... egal *
shit geht echt nich verdammt:
#inlcude <studio.h>
int main()
{
void var; //Variablen deklarartion
var=1;printf("%d",var); //Bildschirmausgabe
system("PAUSE"); //systembefehl
return 0; // wüsste wo gern was?
}
-
1. verwende CPP Tags
Unregistered schrieb:
#include <stdio.h> void func_sinnlos() { printf("Ich bin eine sinnlose Funktion\n"); } int main() { func_sinnlos(); return 0; }
2. Scherzkeks, es geht um Variablen.
Unregistered schrieb:
#inlcude <studio.h> int main() { void var; //Variablen deklarartion var=1; printf("%d",var); //Bildschirmausgabe system("PAUSE"); //systembefehl return 0; // wüsste wo gern was? }
3. Wenn dein C Compiler das compiliert, dann schmeiß ihn weg. Das ist nicht kompilierbar. Und wenn du es nicht besser weißt (immerhin hast du in einem anderen Thread gezeigt, dass du nicht mal den Unterschied zwischen C und C# kennst), dann verkaufe uns hier keine Unwahrheiten.
-
+fricky schrieb:
JustAnotherNoob schrieb:
nullptr wird in C++ bald übernehmen...
und das ist dann gleichbedeutend mit (void*)0, nur als extra keyword, oder was?
nein, das ist eher gleichbedeutend mit 0.
Aber siehe http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf, da ist die Motivation gut erklärt.
-
rüdiger schrieb:
Aber siehe http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf, da ist die Motivation gut erklärt.
aha, auf lustige ideen kommen manche. aber sie hätten besser verbieten sollen, dass man 'nem pointer eine 0 zuweisen kann:
char* ch = nullptr; // ch has the null pointer value char* ch2 = 0; // ch2 has the null pointer value
^^ geht beides aus kompatibilitätsgründen
if (ch == ch2); // true, nehme ich an if( nullptr == 0 ); // error
^^das finde ich irgendwie doof. der cpp-kenner weiss vielleicht, dass pointer und ints was anderes sind, aber den anfänger verwirrt der widerspruch mit den zuweisungen da oben.
-
@Unregistered:
Bitte schreib keinen Müll zu Dingen von denen du offensichtlich überhaupt keine Ahnung hast.
C++ lernt man eben nicht in ein paar Tagen.
-
^^das finde ich irgendwie doof. der cpp-kenner weiss vielleicht, dass pointer und ints was anderes sind, aber den anfänger verwirrt der widerspruch mit den zuweisungen da oben.
Das Ziel von C++0x war die Sprache effizienter zu machen und nicht sie einfacher zu machen. Für Anfänger ist die Sprache eh ein Hammer, aber danach würde ich eine Sprache eh nicht designen(es sei denn sie ist zu Lehrzwecken).
-
rüdiger schrieb:
+fricky schrieb:
JustAnotherNoob schrieb:
nullptr wird in C++ bald übernehmen...
und das ist dann gleichbedeutend mit (void*)0, nur als extra keyword, oder was?
nein, das ist eher gleichbedeutend mit 0.
Aber siehe http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf, da ist die Motivation gut erklärt.
Das ist der C++ Weg
const // this is a const object... class { public: template<class T> // convertible to any type operator T*() const // of null non-member { return 0; } // pointer... template<class C, class T> // or any type of null operator T C::*() const // member pointer... { return 0; } private: void operator&() const; // whose address can't be taken } nullptr = {}; // and whose name is nullptr
und das der C Weg:
#define NULL ((void *)0)
-
Was hat es mit dem mit "or any type of null member pointer" gekennzeichneten Codeabschnitt auf sich? Ein Zeiger auf ein Member einer Klasse, d.h. der Zeiger selbst ist kein Member der Klasse? Kann vllt. jemand ein Codebeispiel posten, bei dem die Konvertierung stattfindet?
-
Kommt das nullptr jetzt überhaupt, dachte da letztens was gelesen zu haben das der aus Zeitgründen nicht kommen sollte weil man sich über einige Kleinigkeiten uneins war?
-
JustAnotherNoob schrieb:
Das Ziel von C++0x war die Sprache effizienter zu machen und nicht sie einfacher zu machen.
naja, diese freaks, die sich den 'nullptr' ausgedacht haben, bezwecken unter anderem 'Make C++ easier to teach and learn' (steht in dem pdf so drin). das erreichen sie damit bestimmt nicht.
DEvent schrieb:
Das ist der C++ Weg
const // this is a const object... class { public: template<class T> // convertible to any type operator T*() const // of null non-member { return 0; } // pointer... template<class C, class T> // or any type of null operator T C::*() const // member pointer... { return 0; } private: void operator&() const; // whose address can't be taken } nullptr = {}; // and whose name is nullptr
und das der C Weg:
#define NULL ((void *)0)
ja, C++ eben, darüber muss man kein wort mehr verlieren. da haben sie schon die möglichkeit, ihre sprache mit templates zu pimpen, aber trotzdem wollen welche für 'nen 0-pointer ein extra keyword einbauen. kannst ja mal neue schlüsselwörter wie 'one', 'two', three' für häufig genutzte integer-konstanten vorschlagen. kommt bestimmt voll gut an in der c++-community.
-
@fricky: Wenn du schon flamen musst, dann doch bitte richtig, C++ hat sehr wenige Schlüsselwörter und deswegen wäre es richtiger darauf rumzuhacken, dass es erst jetzt kommt.
-
JustAnotherNoob schrieb:
C++ hat sehr wenige Schlüsselwörter und deswegen wäre es richtiger darauf rumzuhacken, dass es erst jetzt kommt.
findest du? ich finde es sind verdammt viele. nimm nur mal den code, den DEvent und ich zitiert haben. fast alles sind schlüsselwörter.