char* x = "" das selbe wie char* x = NULL ?
-
Schau dir das Kapitel über Zeiger an
6.3.2.3-6.
-
gemacht. und jetzt, nur aus neugier, wo kommt es vor, dass ein nullpointer nicht null ist oder ein pointer beim casten nach int (sofern int gross genug ist) einen anderen wert bekommt?
mir ist klar, dass wir hier nicht mehr ueber ansi c reden, sondern ueber implementationen. und fuer die interessiere ich mich. denn wenn ich schon "atome sind teilbar" behaupten soll, dann will ich wenigstens auch wissen, in was.
-
da gibts die perversesten sachen. die hcs12xxx-prozessoren von freescale wurden im laufe der zeit immer weiter aufgebohrt. aus einem ursprünglich 16 bit breiten adressraum wurden 4mb indem in gewisse bereiche 8k-pages eingeblendet werden können, andere dagegen fest sind. das geht über ein sogananntes paging register. nun kann man das paging-register und die 16-bit adresse mit bitverschiebungen und oder-verknüpfungen in einen 24-bittigen adressraum umwandeln, den man in c über far* verwenden kann. nach dem reset hat das paging-register den wert 0xe0. ein 'void *far p = NULL;' besteht also aus 3 bytes. ich weiss nicht mehr genau wie man das berechnet aber ich glaub der sah so aus: 'e0 c0 00', was die 'globale adresse' 0x000000 repräsentiert.