Diskussion:Zeiger (C)

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 11 Monaten von Filzstift in Abschnitt Streng typisiert?
Zur Navigation springen Zur Suche springen

Lücken und Fehler im Artikel

[Quelltext bearbeiten]
  • Was fehlt:
    • Zeiger auf Arrays
    • Funktionszeiger
    • Unterschiede zw. Zeigern und Arrays z.B. bei sizeof()
    • Beispiele im Abschnitt 7.4 und 7.5
    • Typsicherheit: Welche Zeigertypen sind zueinander implizit zuweisungskompatibel, welche mit explizitem Type Cast? Welche Einschränkungen gibt es dabei?
    • Zeiger auf Zeiger: wozu braucht man das? Da fehlt ein gutes Beispiel.
    • Aliasing, "restricted" Zeiger, type punning
  • Was falsch ist:
    • Nullzeiger zeigen nicht zwangsläufig auf eine Adresse 0, noch besteht ihr "Bitmuster" zwangsläufig aus lauter Nullbits
    • Die "Differenz zweier Zeiger" ist nur in bestimmten Fällen definiert, ansonsten "undefined behavior" (=UB)
    • Gleiches gilt für Addition und Subtraktion von Zeiger mit Ganzzahl und dem Größer-/Kleiner-Vergleich zweier Zeiger
    • Das Beispiel bei "Zeiger als Rückgabewert einer Funktion" ist schlecht, da ebenfalls UB.

--RokerHRO (Diskussion) 09:15, 15. Feb. 2017 (CET)Beantworten

Zeigerarithmetik: char* Beispiele vermeiden

[Quelltext bearbeiten]

Wenn man die Beispiele mit char* macht, dann kann man gerade nicht erkennen was die Zeigerarithmetik ausmacht, naemlich, dass sie auf Basis des referenzierten Datentyps arbeitet. Bitte in Beispielen int* oder so verwenden, damit man die Abweichung zwischen Anzahl von Bytes und Anzahl von Objekten des referenzierten Typs sehen kann. --Meillo (Diskussion) 13:13, 21. Okt. 2021 (CEST)Beantworten

Streng typisiert?

[Quelltext bearbeiten]

Ich dachte, dass "streng typisiert" bedeutet, dass beispielsweise die Zuweisung einer Adresse einer Double-Variablen an einen Zeiger vom Datentyp int * unzulässig ist. Oder sehe ich das falsch? -- Pemu (Diskussion) 22:55, 14. Dez. 2023 (CET)Beantworten

Da stimme ich dir zu. Die derzeitige Aussage: "Der Datentyp Zeiger ist in C streng typisiert. So ist beispielsweise die Zuweisung einer Adresse einer Double-Variablen an einen Zeiger vom Datentyp int * zulässig" wiederspricht sich und macht so keinen Sinn. --Meillo (Diskussion) 06:02, 15. Dez. 2023 (CET)Beantworten
Ja das ist falsch so. Habe mal versucht das zu überarbeiten. Könnt ihr nochmals drüberschauen?
Es las sich auch fast so, als ob es per se nicht gestattet ist, einen double einem int* zuzuweisen (bzw. heute als (int*)(void*)value damit der Compiler nicht meckert). Kann in bestimmten Fällen explizit erwünscht sein (und man nimmt gerade wegen so was gerne C als Sprache). Daher lieber von Fehlern schreiben, die dann auftauchen, sofern solche Zuweisungen nicht beabsichtigt war. --Filzstift (Diskussion) 15:58, 19. Dez. 2023 (CET)Beantworten