Diskussion:Zeiger (Informatik)

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 1 Jahr von Heralon in Abschnitt dereferenzieren = rückverweisen?
Zur Navigation springen Zur Suche springen

Programmbeispiel

[Quelltext bearbeiten]

Was soll das Programmbeispiel aussagen? Und wo werden da Zeiger benutzt? --RokerHRO 18:22, 20. Dez 2004 (CET)

bitte auch noch ein Beispiel in der Programmiersprache C einfügen --Raymond83 22:47, 28. Jan 2005 (CET)

Überarbeitung am 30.1.2005

[Quelltext bearbeiten]

Ich wollte meine Änderungen von gerade kurz kommentieren:

  • (1) Ich habe Delphi gerade aus dem ersten Abschnitt über maschinennahe Programmiersprachen herausgenommen, weil die Sprache zwar wüste Zeigeroperationen ermöglicht, aber dies im Gegensatz zu Assembler/C/C++ nicht der Normalfall ist. Erst recht ist damit keine Zeigerarithmetik im engeren Sinn möglich (außer durch wüste Typumwandlungen).
  • (2) Die Verwendung von Zeigern (die sogenannte Zeigerarithmetik), kann in bestimmten Fällen den Programmablauf beschleunigen habe ich herausgenommen, weil das eher ein Sonderfall ist.
  • (3) Ein gerne genutzter Trick in der Programmierung ist es, auch mittels Zeigerinkrement durch ein Feld hindurchzulaufen. Anstatt einen Index zu verwenden und so die Feldelemente über diesen anzusprechen, setzt man zu Beginn des Ablaufs einen Zeiger auf den Anfang des Feldes und inkrementiert diesen Zeiger bei jedem Durchlauf.
Das ist kein Trick, sondern das, was der Compiler sowieso intern erzeugt, wenn man die Feldelemente über den Index anspricht.
  • (4) Bei der Verwendung von Feldern/Vektoren kann man mittels Zeigern schnell innerhalb des Feldes springen und navigieren.
    s.o.
  • (5) Das Java-Beispiel ist sehr kompliziert, aber undokumentiert und daher nutzlos. Ich habe es nur drinnengelassen, weil ich auf die schnelle nichts besseres hatte.

Mh 12:33, 30. Jan 2005 (CET)

(zu Punkt 1) Ich sehe nicht, wo da der wesentliche Unterschied zwischen Delphi und C++ sein soll.
(Der vorstehende Beitrag stammt von Snert – 12.2.2005, 17:02 (MEZ) – und wurde nachträglich unterschrieben.)
Dann lern' doch einfach mal Delphi (oder eine andere Hochsprache) ;-) . Der wesentliche Unterschied ist im Kern, daß eine Hochsprache Zeigeroperationen teilweise oder vollständig verbirgt. Mh 22:55, 3. Mai 2005 (CEST)Beantworten
(zu Punkt 2) Das ist kein Sonderfall, sondern eine verbreitete Technik.
(Der vorstehende Beitrag stammt von Snert – 12.2.2005, 17:02 (MEZ) – und wurde nachträglich unterschrieben.)
In maschinennahen Programmiersprachen, die aber nicht der allgemeine Fall sind. Schön, daß wir da also einer Meinung sind. Mh 22:55, 3. Mai 2005 (CEST)Beantworten
(zu Punkt 3) Was ein Compiler intern erzeugt, ist von Compiler zu Compiler verschieden. Deshalb ist die beschriebene Technik ein gern genutzter Trick in der Programmierung.
(Der vorstehende Beitrag stammt von Snert – 12.2.2005, 17:02 (MEZ) – und wurde nachträglich unterschrieben.)
Das ist Blödsinn. Entweder unterstützt die Sprache das (z. B. in C, wo es für viele Fälle keine Alternative zu Pointerarithmetik gibt) oder sie unterstützt es nicht (z. B. Java, Pascal, LISP, ...). Und in letzterem Fall ist es je nach Sprache schwierig oder unmöglich und außerdem meist unsinnig. Mh 22:55, 3. Mai 2005 (CEST)Beantworten
Nicht immer nur auf die PC Technik schauen. Im Embedded Bereich kenne ich persönlich etliche Firmen, die die Verwendung von Indizes verbieten. Und nur aus dem Grund, weil die eingesetzten Compiler Zeiger effizienter umsetzen. schlupp2002 15:08, 1. November 2006 (CET)
Also http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/40546.pdf sagt: Man möge die array Schreibweise (a[i]) gegenüber der pointer Schreibweise (*(a+1)) bevorzugen weil die modernen Compiler ersteres besser optimieren können. Für mich klingt es logisch zunächst so zu schreiben das es der Compiler (und auch ein Leser) gut versteht und man erst dann, wenns ums Eingemachte geht (wenn man mit Profilern die entsprechende Stelle als bottleneck erkannt hat) die H4X0r Skills drauf loslässt und kryptischen Zeug schreibt um evtl. die letzten paar Prozent rauszukitzeln. Kurz gesagt: nur in extrem optimiertem Code hat Zeigerarithmetik oder gar asm() was zu suchen. Heute sind die Compiler meistens besser als wir selber, ja auch besser als die erfahrenen Leute (Bsp: Compiler schreiben die richtige Anzahl NOPs damit die Pipeline ned abreisst[und sowas macht kein Mensch]). Kann ja jeder erstmal leicht kontrollieren was sein Compiler so für Ideen hat und später noch dran rumfeilen. --Evxxvi 03:01, 27. Nov. 2008 (CET)Beantworten
(zu Punkt 4) s.o.
(Der vorstehende Beitrag stammt von Snert – 12.2.2005, 17:02 (MEZ) – und wurde nachträglich unterschrieben.)
(zu Punkt 5) Java-Beispiel raus.
(Der vorstehende Beitrag stammt von Snert – 12.2.2005, 17:02 (MEZ) – und wurde nachträglich unterschrieben.)
Es macht auch keinen Sinn Java als "Zeigerfrei" zu bezeichnen, dass ist inkonsistent gegenüber dem Java-Artikel. Desweiteren hat Java so etwas wie "NullPointerExceptions", was ein weiterer Hinweis ist das Java Zieger verwendet.
(Der vorstehende Beitrag stammt von 137.226.77.2 – 16.3.2005, 03:10 (MEZ) – und wurde nachträglich unterschrieben.)
Ich weiss nicht, was daran ein "Trick" sein soll. Es ist ein Werkzeug bzw. eine Möglichkeit Zeiger zu nutzen. Was der Compiler daraus macht, ist eine ganz andere Frage, d.h. es gibt durchaus CPUs, die mit Indices (also im Prinzip relativen Zeigern) schneller arbeiten, bzw. Compiler, die den Code besser optimieren können, wenn man Array[Index] statt Pointern verwendet. Außerdem ist es beispielweise auf 64-Bit Architekturen ratsam - soweit sinnvoll - 8/16/32-Bit Indices statt Pointern zu verwenden, um Speicherbandbreite und -platz sparen, da sich anderenfalls der breitere Bus durch die breiteren Pointer leicht armortisiert. --82.141.48.8 23:49, 5. Jun 2005 (CEST)

Verweis „Listen“

[Quelltext bearbeiten]

Habe mal den verweis "Listen" unter vorteile in den Informatik Konnotierten Listenverweis umgewandelt. Was eine Liste als abstrakter Begriff ist, ist für die meisten Menschen die hier lesen wohl recht uninteressant. --213.196.192.169 02:16, 19. Nov. 2006 (CET)Beantworten

Redundanzbaustein entfernt

[Quelltext bearbeiten]

Nach lesen der Beiträge auf Wikipedia:Redundanz/Januar_2007#Handle_und_Zeiger_.28Informatik.29 wurde der Redundanzbaustein zu Handle entfernt.
(Der vorstehende Beitrag stammt von 217.229.14.114 – 25.2.2007, 14:00 (MEZ) – und wurde nachträglich unterschrieben.)

Oder diese Variablen selbst?

[Quelltext bearbeiten]

Ein Zeiger oder Pointer bezeichnet in der Informatik eine spezielle Klasse von Variablen, die auf einen anderen Speicherbereich verweisen, "oder diese Variablen selbst"
ich verstehe den letzten teil dieses Satzes leider nicht, ( in Anfür.strichen)
ok, ein pointer zeigt auf eine Addresse im Speicher,...
so...nun verstehe ich das jetzt richtig? wurde zb. auf "diese" Addresse eine Variable zuvor gespeichert? Oder deren Wert?...und gibt es nun auch noch die Möglichkeit, direkt auf diese Variable zu zeigen? also nicht mehr auf den Wert der Variable im Speicher, sondern praktisch auf die Stelle im Quelltext wo die Variable ist oder wie? Springt der dann auf die Variable?
oder heisst dieser Teil der pointer zeigt auf sich selbst, weil...in diesem Satz 2 mal von variablen gesprochen wird, und aus dem Satz nicht klar wird das es verschiedene sind....vorallem weil da auch noch steht "diese" könnte man meinen, der Autor meinte diese gleichen, pointer Variablen
mfg
(Der vorstehende Beitrag stammt von 77.180.151.94 – 12.3.2007, 18:41 (MEZ) – und wurde nachträglich unterschrieben.)

Ein Zeiger ist eine Variable, die angibt, wo ein beliebiger Wert im Speicher zu finden ist. Beispielsweise hast du eine Variable, in der du einen Wert gespeichert hast, und einen Zeiger, den du auf diese Variable zeigen lässt. Dann enthält der Zeiger die Position im Hauptspeicher (man sagt dazu auch "Adresse" ;-)), wo deine Variable mit dem Wert abgelegt ist. Hoffe, das ist so etwas verständlicher. --Rohieb 会話 +/- 19:23, 12. Jan. 2008 (CET)Beantworten

Zeigeroperationen

[Quelltext bearbeiten]
  • Subtrahieren: zwei Zeiger dürfen subtrahiert werden. Das Ergebnis ist eine Ganzzahl.
  • Addieren: diese Operation ist verboten, da dies keinen Sinn ergibt! Erlaubt ist hingegen in einigen Programmiersprachen die Addition einer Ganzzahl zu einem Zeigerwert (was bei Arrays zum Einsatz kommt).

Warum steht bei Addieren das die Operation verboten ist weil sie keinen Sinn ergibt? Subtraktion ergibt doch noch weniger Sinn! --62.180.146.106 11:29, 12. Jan. 2008 (CET)Beantworten

Hm, in der Subtraktion sehe ich nun auch überhaupt keinen Sinn... Man hat dann zwar eine Ganzzahl, die die Größe des Bereichs zwischen den Zeigern angibt, aber was will man dann damit anfangen...? Das kann ich höchstens benutzen, wenn ich weiß, dass zwei Objekte im Speicher genau hintereinander liegen, aber wann weiß ich das als normalsterblicher Programmierer schon? Die Addition eines Zeigers mit einer Zahl kommt (zumindest in C/C++) bei Arrays zum Einsatz, oder bei Assembler beim Zugriff auf den Hauptspeicher, aber eine Addition von zwei Zeigern kann ich mir auch nicht erklären.
So, also scheint der ganze Abschnitt bis auf die Addition Zeiger+Ganzzahl wohl sinnlos zu sein :-) --Rohieb 会話 +/- 19:17, 12. Jan. 2008 (CET)Beantworten
Danke.
Bei Object-Pascal/Delphi geht das übrigens auch, aber nicht nur mit Arrays sondern auch mit PChars, Records usw. --62.180.145.129 11:13, 13. Jan. 2008 (CET)Beantworten
Die Diskussion ist schon etwas älter, aber ich möchte sie dennoch kommentieren:
Die Subtraktion zweier Zeiger, um deren Abstand (als Fachterminus wird manchmal „Offset“ verwendet) zu ermitteln, ist eine sinnvolle und (z. B. in C) sehr gängige Praxis. Typisches Beispiel sind Zeiger, die auf verschiedene Teile eines Arrays (etwa eines Strings) zeigen und man wissen möchte, wie weit sie voneinander entfernt sind bzw. wieviele Elemente dazwischen liegen. Es handelt sich dabei im Prinzip um die Umkehrfunktion der Addition eines Zeigers und einer Zahl. Übrigens wird diese Operation auch im ISO-C-Standard ausführlich behandelt, und es gibt etliche Standardfunktionen, die mit solchen Offsets arbeiten (z. B. strspn(3) zum Parsen von Strings, standardisiert nach ISO/IEC 9899:1990 a.k.a. „ISO C90“); es ist also nicht etwa nur ein „Programmiertrick“. Und dass es in Assembler-Sprachen erst recht gang und gäbe ist, muss ich wohl nicht extra erwähnen.
Die Addition zweier Zeiger dagegen ist keine sinnvolle Operation, denn was soll überhaupt dabei herauskommen? Ein Zeiger jedenfalls nicht (den erhält man nur bei Addition eines Zeigers und einer Zahl), und ein Offset kommt auch nicht dabei heraus.
Die oben zitierten beiden Punkte sind also vollkommen korrekt (außer einer etwas unglücklichen Formulierung); sie zu löschen war ein Fehler. Ich bin geneigt, sie wieder hinzuzufügen, ggf. etwas besser fomuliert. --Winof (Diskussion) 12:43, 21. Mai 2018 (CEST)Beantworten

Zeigertyp

[Quelltext bearbeiten]
  • Der Begriff wird häufig fälschlicherweise auch für den Datentyp solcher Variablen benutzt, wobei diese Bedeutung richtig Zeigertyp genannt wird.

Kann mir jemand erklären, was damit gemeint sein soll? Wird der Typ der referenzierten oder der referenzierenden Variable (also des Zeigers selber) „Zeigertyp“ genannt? --Rohieb 会話 +/- 19:33, 12. Jan. 2008 (CET)Beantworten

der Zeiger selbst.
Integer ist der Datentyp; PInteger (oder ^Integer) der Zeigertyp --62.180.145.129 11:21, 13. Jan. 2008 (CET)Beantworten
OK, so hab ich das auch verstanden. Ich änder das mal in etwas verständlicheres. --Rohieb 会話 +/- 16:22, 13. Jan. 2008 (CET)Beantworten

Größere Änderungen

[Quelltext bearbeiten]

Hallo ich habe mal nach dem Motto trau dich den Artikel hier neu formuliert und um strukturiert. Da ich noch neu bei der Wikipedia bin, hab ich mich nicht getraut die Änderungen in - place durchzuführen und bitte um Feedback:

  • Formulierung und typos
  • Inhaltliche Fehler
  • Ich bin hauptsächlich C / C++ Programmierer, deswegen ein bisschen auf Allgemeingültigkeit schauen.
  • Beispiel in anderer Sprache oder Wie soll mans machen...
  • Hilfe beim Mergen

Danke und Gruss --Gleu 19:27, 25. Dez. 2009 (CET)Beantworten

Ein paar Anmerkungen zu Deiner Artikel Version:
  • Wie im aktuellen Artikel ist von 'Intelligenten Zeigern' die Rede. Ist wohl eine Begriffsfindung. Smart-Pointer ist der Fachbegriff.
  • 'fester Wert' -> Konstante
  • Abschnitt 'Verwendung in Datenstrukturen' erklärt nicht wirklich wie Pointer in Datenstrukturen verwendet werden. An der Stelle könnte vielleicht auch ein konkretes einfaches Beispiel hilfreich sein (z.B. verkette Liste)
  • Funktionszeiger -> umfangreicher, was konkret passiert
  • 'Abschließende Betrachtungen' als Gliederungsebene für einen WP-Artikel ist problematisch, Unterabschnitte sollten in den eigentlichen Artikel integriert werden
  • 'Vorteile/Nachteile' - nicht neutral! Beispielsweise 'Der Umgang mit Zeigern ist schwierig zu erlernen ...' - Listen sollten besser in einen Fliesstext umgewandelt werden und in passende Abschnitte integriert werden, so dass neutral Einsatzgebiete/Anwendungsfälle/... von Pointern beschrieben werden
  • Den Sinn von Abschnitt 'Arbeiten mit Zeigern' verstehe ich nicht - ist das eine Art Best-Practice-Rules?
  • Zur Gliederung: 'Verwendung' ist wenig hilfreich als Abschnitt, da zu unspezifisch, bzw. zuviel darunter auftaucht. Die meisten Unteabschnitte könnte man auch auf die oberste Ebene heben. Der Text zu typysierte, untypsiertere bzw. Funktionspointer könnte man in einem Abschnitt 'Arten' oder ähnliches zusammenfassen. 'Zeigerarithmetik' sollte mit 'Operationen' gemerge't werden, da die arithmetischen Operationen ja auch Operationen sind.
  • 'Diese Operationen sind jedoch sehr fehleranfällig und sollten nur an wirklich zeitkritischen Stellen verwendet werden. In manchen Programmiersprachen wird diese Art der Verwendung nicht unterstützt.' - der erste Hinweise ist eher in einem Tutorial relevant, nicht in einem enzyklopädischen Artikel - der 2. Satz wird schon durch den Programmiersprachen-Absatz abgedeckt.
--Gms 16:20, 29. Dez. 2009 (CET)Beantworten
Sind vllt. ein paar brauchbare Verbesserungen bei. Kann auch nicht alles beurteilen. Vielleicht solltest du Abschnitt für Abschnitt mögliche Verbesserungen vornehmen. Kritik kommt dann schnell und speziell ; ) --WissensDürster 18:21, 22. Jan. 2010 (CET)Beantworten

Fehler: Grafik passt nicht mehr zum Text!

[Quelltext bearbeiten]

Die Grafik wurde ersetzt und zeigt für b einen neuen Hexadezimalwert (01101101). Dieser stimmt jetzt leider nicht mehr mit der im Text genannten 17 überein! (nicht signierter Beitrag von 131.246.227.209 (Diskussion | Beiträge) 20:48, 3. Feb. 2010 (CET))Beantworten

Verzeiht bitte, wenn ich hier an der falschen Stelle meine Bemerkung festhalte - ich hab' noch nie einen Wikiartikel diskutiert. Ich möchte anregen, dass die Werte in der Graphik durch andere ersetzt werden, denn eine achtstellige Zahl, bestehend aus Nullen und Einsen wird wohl von vielen intuitiv als Binärzahl interpretiert. Könntet Ihr bitte noch ein paar Buchstaben oder Ziffern > 1 hinzunehmen, damit man nicht erst in die "aha, 8-Bitwert, okay!"-Sackgasse rennt und sich dann im Nachgang wundert, warum eine 8-Bit-Zahl so dermaßen groß (17830145) sein kann? Oder vielleicht ein "0x" davorschreiben oder ein subscript "16" dahinter oder so. Ich denke, dass es vor allem Einsteigern / Neulingen den Zugang zum Artikel erleichterte. Ich bin weder das eine noch das andere, aber müde und deswegen voll hineingetappt und habe mich schwer gewundert, wie das zusammenpassen soll. (nicht signierter Beitrag von 84.178.44.107 (Diskussion | Beiträge) 10:47, 10. Mai 2010 (CEST))Beantworten

Warum Zeiger?

[Quelltext bearbeiten]

Ich bin leider kein C Programmierer. Zeiger habe ich nie ganz verstanden. Aber ich habe vor nicht allzulanger Zeit einen guten Hinweis in einem Artikel gelesen: Zeiger steigern die Effizienz von Programmen, da sie Informationen aus dem Speicher nicht in die Funktion kopieren müssen, sondern durch den Zeiger die Informationen einfach aus dem Speicherbereich holen. Ich bin mir im Klaren, dass dies nicht der einzige Grund ist. Aber es war für mich den am einfachsten nachvollziehbare Grund. Frage an die Autoren: kann man diese Information auch auf der Seite schreiben? Viele Grüße Sandstorm 21:15, 21. Nov. 2010 (CET)Beantworten

Ich denke dieser Hinweis wäre besser im Artikel Referenzparameter aufgehoben. Dieser Artikel behandelt Zeiger allgemein und die kann man für einen ganzen Haufen dinge gebrauchen, nicht nur als Übergabeparameter. --Bernedom 14:24, 24. Nov. 2010 (CET)Beantworten

Memberpointer

[Quelltext bearbeiten]

Gibts sowas nur in C++ oder auch in anderen Sprachen? Wenn ja, wäre es sicher sinnvoll, sie hier auch zu erwähnen, was meint ihr? --RokerHRO 20:53, 22. Dez. 2011 (CET)Beantworten

Nachteile und Gefahren

[Quelltext bearbeiten]

Der folgende Absatz gefällt mir nicht:

Im Allgemeinen ist keine Datentyp-Kontrolle möglich, das heißt, beim Ausführen kann nicht kontrolliert werden, was für Daten an der Zieladresse stehen, und ob diese den Erwartungen (Spezifikationen) des Programmablauf entsprechen

Es gibt sehr wohl Programmiersprachen, die eine Datentyp-Kontrolle ermöglichen, so kann ein Zeiger unter ABAP z. B. so aussehen:

*Deklarationen
DATA char TYPE C LENGTH 4 VALUE 'test'.
DATA num TYPE N LENGTH 4 VALUE '4711'.
FIELD-SYMBOLS <zeiger> TYPE C.
FIELD-SYMBOLS <zeiger_2> TYPE C LENGTH 4.
FIELD-SYMBOLS <zeiger_3> TYPE ANY.
*Zuweisungen
ASSIGN char TO <zeiger>. "funktioniert
ASSIGN char TO <zeiger_2>. "funktioniert
ASSIGN char TO <zeiger_3>. "funktioniert
ASSIGN num TO <zeiger>. "funktioniert nicht
ASSIGN num TO <zeiger_2>. "funktioniert nicht
ASSIGN num TO <zeiger_3>. "funktioniert
*Zusatz CASTING (Datenfelder müssen die selbe Länge haben, sonst klappt es nicht)
ASSIGN num TO <zeiger> CASTING. "funktioniert nicht
ASSIGN num TO <zeiger_2> CASTING. "funktioniert
ASSIGN num TO <zeiger_3> CASTING. "funktioniert nicht

-- 87.164.166.65 02:02, 30. Dez. 2011 (CET)Beantworten

Es wäre erstmal zu klären, was mit "Datentypkontrolle" genau gemeint sein soll. Ich habe die Aussage erstmal entschärft. Denn selbst in C und C++ muss man schon explizit das Typsystem aushebeln (mit Type-Casts), damit das klappt. Und da ein Paradigma von C nunmal "trust the programmer" ist, heißt dies: Wenn der Programmierer über einen expliziten Cast die Typprüfung übergeht, vertraut der Compiler darauf, dass der Programmierer weiß, was er tut. --RokerHRO 20:09, 30. Dez. 2011 (CET)Beantworten

"Zeigerarithmetik" nur in C und C++?

[Quelltext bearbeiten]

Gibt es Zeigerarithmetik (also auch unter diesem Begriff) auch in anderen Sprachen oder nur in C und C++? Dann könnte man das vielleicht ein wenig umformulieren / konkretisieren. --RokerHRO (Diskussion) 10:10, 6. Apr. 2016 (CEST)Beantworten

Nullzeiger dereferezieren.

[Quelltext bearbeiten]

Wenn ich [1] (Abschnitt in Tabelle "crashdump") richtig verstanden habe, führ eine Dereferenzierung des Nullpointers (im Kernelmode) zum Absturtz des Computers. Irgendjemand was dagegen wenn ich das ändere? --Worthefre (Diskussion) 22:00, 18. Feb. 2018 (CET)Beantworten

Was genau möchtest Du denn ändern? Mir ist nicht ganz klar, was man da genau ändern müsste. Was bei einer Dereferenzierung des Nullpointers im Kernelmode passiert, hängt vom Betriebssystem, vom Prozessor und vom Compiler ab. Kann gut sein, dass es bei Linux auf x86-Hardware zu einer Kernel-Panic führt (ich weiß es nicht), aber es gibt Betriebssysteme, bei denen das nicht so ist, da an die Null-Adresse VM gemappt ist (wohlgemerkt: im Kernelmode; im Usermode ist das tatsächlich eher unüblich, aber auch hier gibt es Gegenbeispiele, etwa AIX auf bestimmten Plattformen). Auf jeden Fall bin ich der Ansicht, dass solche speziellen Sachen eher nicht in diesen Artikel gehören. Ich würde daher nichts ändern. --Winof (Diskussion) 17:15, 19. Feb. 2018 (CET)Beantworten

Manuelle Allokation in der Definition HLL unzulässig.

[Quelltext bearbeiten]

Allokation ist ein vollständig zu automatisierender Prozess, statische Adresszuweisung ist unzulässig. (Planebenekalkül)

Speicherarithmetik ist ein komplett eigener, äusserst komplexer Forschungszweig, man verschenkt Möglichkeit der sauberen dynamischen SpeicherProgrammierung und Quick Garbage Clearing bei Flusszahlrundung durch hardwareseitig implentierbare Gaussiterationen, wenn auch nur einen einzige manuelle Speichereingriff vornimmt.

C ist als Speichermanagementsprache zur Gänze ungeeignet. Ihm fehlt die Knackigkeit des Byte Codes, ebenso die Übersichtlichkeit funktionaler Sprachen der HLL Ebene.

Pointerarithmetik ist eine Kunst die nur zu lernen lohnt, wenn sich auf Speichermanagementprogrammierung fokusiert. andernfalls sind gute Standardzeiger die einzige Option, also auswendig lernen und damit nicht mehr Zeitgemäss, auswendig macht ein Rechner 10.000.000.000.000.000 mal besser. und noch schneller.

Bitte erwähne man dieses. (nicht signierter Beitrag von 217.255.140.147 (Diskussion) 18:18, 19. Jun. 2019 (CEST))Beantworten

Video

[Quelltext bearbeiten]

Ich finde das Video großartig. Sehr gut erklärt. Weiß jemand zufällig, wo man die restlichen Videos abrufen kann? Leider gibt es keinerlei Hinweise auf den Urheber/die Urheberin. Vielen Dank. (nicht signierter Beitrag von FKaspar (Diskussion | Beiträge) 22:33, 2. Jan. 2020 (CET))Beantworten

https://www.rene-pickhardt.de/index.html%3Fp=1934.html --2A02:908:5D4:880:E10C:6153:5359:1FE9 21:12, 8. Jul. 2021 (CEST)Beantworten

Abschnitte für Zeiger in C++ und C#

[Quelltext bearbeiten]

Ich finde, die beiden letzten Änderungen sind zu viel des Guten.

1. Die Abschnitte sind viel zu lang. Wikipedia soll kein Programmier-Tutorial sein und ein Artikel über "Zeiger" soll nicht die halbe Programmiersprache erst erklären müssen. Dafür gibt es Wikibooks.

2. Die Abschnitte sind redundant. Es sollte alles, was es programmiersprachen-übergreifend zu Zeigern zu sagen gibt, in den übergeordneten Abschnitt packen und dann die sprachspezifischen Unterschiede in den spezifischen Abschnitten erläutert werden und – sofern für das Verständnis hilfreich – ggf. durch ein paar Codeschnipsel ergänzt werden.

3. Die Erläuterungen sollten korrekt sein. Für C++ bedeutet das, dass nur das erzählt wird, was die Sprachnorm garantiert oder vorschreibt, und nicht, was auf einer bestimmten Plattform gilt.

4. Die Code-Beispiele sollten eine typische Verwendung von Zeigern aufzeigen. Sonst verwirren sie den Leser nur und er fragt sich (zu recht): "Aber wozu soll das jetzt gut sein?" Außerdem sollten sie guten Programmierstil zeigen.

--RokerHRO (Diskussion) 09:26, 13. Jul. 2021 (CEST)Beantworten

Unterstützung hierfür von Nomen4Omen (Diskussion) 17:52, 18. Jul. 2021 (CEST)Beantworten

Revert wegen Belegen?

[Quelltext bearbeiten]

Hallo, @Schotterebene. Meine Bearbeitung war hauptsächlich eine Umstrukturierung. Für welche Aussagen, die nicht schon voher im Artikel waren, soll ich Belege finden? MfG --Heralon (Diskussion) 11:35, 21. Sep. 2023 (CEST)Beantworten

Der Abschnitt ueber die Fragmentierung ist neu und ohne Belege. (Ich faende es gut, Umformulierungen und neue Inhalte in separate Aenderungen aufzuteilen, damit es nicht so unuebersichtlich wird und man dann den einen Teil stehen lassen und nur den anderen reverten kann.)
Deine Umformulierung des ersten Absatzes finde ich deutlich schlechter als die vorige Formulierung. Ein "bzw." ist an so einer Stelle definitiv schlecht. Ausserdem ist deine Formulierung weniger generell, sondern stark aus Programmiererperspektive geschrieben. Mir hat die ganz allgemeine Definition besser gefallen.
An anderen Stellen habe ich deine Anpassungen aber besser lesbar gefunden. Bei den Beschreibungen der Programmiersprachen habe ich dann aufgehoert zu lesen, weil mir der Diff zu unuebersichtlich war, die Aenderungen zu viele und ich nicht beide Versionen manuell vergleichen wollte. Kleinere und homogenere Aenderungen finde ich angenehmer nachzuvollziehen.
--Meillo (Diskussion) 13:28, 21. Sep. 2023 (CEST)Beantworten
Der Abschnitt mit der Speicherfragmentierung ist aus der "Nachteile" Auflistung welche keine Belege hatte umformuliert.
Ich habe die Einleitungsdefinition umformuliert weil Zeiger keine "Objekte" im Sinne der Informatik sind, sondern idR. primitiv bzw. ein Sonderfall. "Objekt" kann natürlich auch unspezifisch sowas wie "Ding" bedeuten(war, denke ich, auch so gemeint), könnte aber meiner Meinung nach etwas verwirrend sein, wenn man nicht in der Materie ist. Das "bzw." ist in der Tat schlecht, mir ist allerdings kein einzelnes Wort eingefallen, dass Zeiger in allen Fällen beschreibt.
Inwiefern ist meine Definition mehr aus Programmiererperspektive geschrieben als die ursprüngliche? Kann gut sein das mir da was entgeht, da ich selbst Programmierer bin.
Das der Diff zu unübersichtlich ist, ist ein guter Hinweis, ich werde bei Gelegenheit die Änderungen in kleinere Diffs aufteilen.
Vielen Dank für die Kritik :) --Heralon (Diskussion) 22:13, 21. Sep. 2023 (CEST)Beantworten
Dass der Fragmentierungsabschnitt nur verschoben und umformuliert worden ist, wird einfacher sichtbar, wenn eine Aenderung nur diese Verschiebung und Umformulierung enthaelt. Dann waere das aus meiner Sicht auch kein Problem gewesen. ;-)
Inwiefern deine Definition mehr aus der Programmierersicht ist als die vorige, beantwortest du in dem Absatz darueber eigentlich schon selbst: "Ich habe die Einleitungsdefinition umformuliert weil Zeiger keine "Objekte" im Sinne der Informatik sind, sondern idR. primitiv bzw. ein Sonderfall. "Objekt" kann natürlich auch unspezifisch sowas wie "Ding" bedeuten". Deine Definition ist so geschrieben, wie sie ein Programmierer schreiben wuerde. Die vorige war so geschrieben, wie sie jemand von ausserhalb der Informatik schreiben wuerde, IMO. Ehrlich gesagt weiss ich nicht wie die Wikipedia-Kriterien dazu sind, ich selbst denke, dass jeder Artikel in einem Lexikon immer fuer Fachfremde geschrieben sein sollte.
Du verwendest "verweisen" schon im ersten Absatz, waehrend die andere Definition von "zwischenspeichern" redet, was ein fuer Aussenstehende leichter verstaendlicher Begriff ist. Der IMO sinnvolle, eine Stufe tiefer erklaerende, zweite Absatz ist bei dir leider stark zusammengekuerzt und setzt dann vieles implizit voraus, was zuvor explizit beschrieben war. Das finde ich einen Verlust.
Die potenzielle Verwirrung des Begriffs "Objekt" kann ich nachvollziehen, ich faende es aber unangemessen, den Begriff nicht mehr im allgemeinen Sinn zu verwenden, nur weil die Objektorientierung ihn auch nutzt. ;-) Bislang bin ich auf kein gleichermassen passendes Synonym gekommen, ausser "Ding", das aber aus stilistischen Gruenden nicht angemessen erscheint.
Ich bin jedenfalls dafuer, dass die Einfuehrungs-/Definitionsabsaetze so bleiben wie sie waren. Zu den anderen Aenderungen kann ich wenig sagen, weil ich mir bislang (noch) nicht die Muehe gemacht habe, sie wirklich nachzuvollziehen und zu bewerten. Vielleicht koenntest du uns das erleichern, wenn du in ein paar Saetzen skizzieren koenntest, was die Hintergrundueberlegung und das Ziel deiner Aenderungen war. --Meillo (Diskussion) 07:13, 22. Sep. 2023 (CEST)Beantworten

dereferenzieren = rückverweisen?

[Quelltext bearbeiten]

Ich finde den Begriff "rückverweisen" seltsam als deutsches Synonym zu "dereferenzieren", wie er im Artikel genutzt wird. Das macht fuer mich inhaltlich keinen Sinn und sieht mir falsch aus.

Dereferenzieren bedeutet, der Referenz (also dem Zeiger) zu folgen und den Wert an der Zieladresse zu holen/verwenden. In diesem Vorgang gibt es nirgends ein Zurueck; das ist alles nur vorwaerts. (Eine doppelt verkettete Liste hat Rueckverweise.) Wenn man schon einen deutschen Begriff braucht, dann muesste es sowas wie "verweisaufloesen" sein. Ich kenne aber keinen solchen.

Ich schlage vor, dass "rueckverweisen" entfernt wird, wenn der Begriff nicht mit etablierter Literatur bestaetigt werden kann. --Meillo (Diskussion) 07:21, 22. Sep. 2023 (CEST)Beantworten

Ich habe den Begriff "Rückverweisen" in dieser Verwendung außerhalb dieses Artikels noch nirgendwo gesehen, können wir gerne raus nehmen. --Heralon (Diskussion) 12:03, 22. Sep. 2023 (CEST)Beantworten