Autor |
Beitrag |
Btl
Hält's aus hier
Beiträge: 7
|
Verfasst: So 13.11.11 19:13
Moderiert von Narses: Abgetrennt von [url=www.delphi-forum.de/...?t=80930]hier[/url].
was heißt eigentlich nil ?
|
|
jfheins
      
Beiträge: 918
Erhaltene Danke: 158
Win 10
VS 2013, VS2015
|
Verfasst: So 13.11.11 19:29
[url]http://de.wikipedia.org/wiki/Nil_(Begriffsklärung)[/url]
(Abkürzung für "not in list")
|
|
haentschman
      
Beiträge: 285
Erhaltene Danke: 33
DX10 Berlin Professional
|
Verfasst: So 13.11.11 19:34
Hallo...
lt. Wörterbuch  ...
Zitat: |
Deutsch.................................Englisch
nichts; null; keine; keiner;....none; naught; nil; nowt
|
Beispiel: Wenn eine Objektinstanz nil ist, dann ist sie leer bzw. enthällt kein Objekt.
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Mo 14.11.11 01:07
Not in list - nicht in der Liste - ist m.E. ein wenig irreführend, denn Listen als Datenstrukturen sind n.m.W. nicht zwingend nötig.
Tatsächlich ist nil das Nullelement, der Nullwert in der Welt der Zeiger, ein Zeiger, der nirgendwohin zeigt, nicht einmal zur 0. Speicherzelle.
So, wie die Null das Nullelement in der Welt der Zahlen, der Nullvektor das Nullelement in der Welt der Vektoren, der Punkt das Nullelement in der Geometrie und die leere Menge das Nullelement in der Mengenlehre ist usw. usf., so ist eben nil eben auch ein Nullelement, nämlich in der Welt der Speicheradressierung(en).
Zuletzt bearbeitet von Delphi-Laie am Mo 14.11.11 12:45, insgesamt 1-mal bearbeitet
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mo 14.11.11 01:58
und wen es in der Implementierung interessiert
Delphi-Quelltext 1:
| Showmessage(IntToStr(Integer(nil))); |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mo 14.11.11 04:09
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mo 14.11.11 05:32
aus Wikipedia:
:
NIL
Einige Programmiersprachen (beispielsweise Pascal, LISP, Smalltalk, Ruby, Objective-C) verwenden die Bezeichnung nil, anstatt Null oder null. Nil steht einerseits für englisch not in list, also nicht in der Liste. Dies hat historische Gründe, es entstammt der Programmiersprache LISP, die als einzige Datenstruktur den in Blattrichtung verketteten Binärbaum kennt, der aber gewöhnlich nur zur Darstellung einfach verketteter Listen genutzt wird. Die Bezeichnung wurde auch für andere Programmiersprachen übernommen, da das lateinische Wort nil soviel bedeutet wie nichts.
NIL = Abkürzung für nihil : nichts (lateinisch). Man sieht, irgendwo sind die alten Römer doch aktiv.  Und wenn es im Nichts ist. 
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 14.11.11 09:37
Bergmann89 hat folgendes geschrieben : | Wenn du Speicherstelle 12345 mit dem Zeiger 0x00003039 (=12345d) adressierst, dann adressierst du die Speicherstelle 0 mit 0x00000000, heißt ein NullPointer (= 0x00000000) zeigt auf die Speicherstelle 0. Oder hab ich jetzt n Denkfehler?!  |
Im Adressraum eines Prozesses gibt es die sogenannte "Partition für NULL*-Zeigerzuweisungen". Dieser liegt bei Windows20000** im Bereich von 0x00000000 bis 0x0000FFFF (x86). Greift ein Prozess lesend oder schreibend auf Adressen dieses Bereiches zu löst der Prozessor eine Zugriffsverletzung aus. Dies wird von Funktionen genutzt, die Zeiger zurückgeben. Kann kein Zeiger zurückgeben werden, weil das Reservieren von Speicher fehlgeschlagen ist, wird eine Adresse aus dem genannten Bereich zurückgegeben, damit der Programmierer die Chance hat zu prüfen, ob erfolgreich Speicher reserviert wurde. Wäre dem nicht so, hätte der Programmierer nicht die Möglichkeit zu prüfen, ob die Funktion erfolgreich war, weil ja alle Adressen letztendlich irgendwie gültig sind, im Sinne von "existieren". Ob dahinter verwertbare Daten stecken oder nicht, ist was anderes.
*) NULL in C/C++ entspricht nil in Pascal
**) Habe leider keine Literatur für Windows XP und höher
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 28.11.11 01:07
Das NULL-Segment ist immer exakt eine Guard Page mit der nativ vom OS verwendeten Page Size. Auf 32 Bit sind das 4KiB, bei 64 Bit muss ich nachschauen.
Ist bei Linux übrigens genauso, weil das von der CPU-Architektur kommt.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|