Diskussion:Zeiger (C)
Letzter Kommentar: vor 8 Monaten von Filzstift in Abschnitt Streng typisiert?
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)
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)
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)
- 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)
- 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)