[C/C++] Wie sinnvoll sind Zeiger wirklich?

Suehprom

Grünschnabel
hallo Leute,
immer wieder heißt es Zeiger seien das A und O in der C-Programmierung.
Sie seien das Werkzeug, dass den in C-Programmierten Applikationen den
entscheidenen Geschwindigkeitsvorteil bereitet.
Wie sinnvoll ist es wirklich daunerd Zeiger zu gebrauchen? Lohnt es sich auch
mit Zeigern von kleinen Structs zu arbeiten, um das Kopieren der Objekte zu
vermeiden? Oder bringen Zeiger nur etwas, wenn es um größere Klassen geht?
Danke im Vorraus!

Gruß MaX
 
Mal von der C Seite zu sehen:
Geschwindigkeit mal aussen vor, aber. für den Stack (der ja auch nicht unendlich groß ist) ist es wichtig.
Übergist du eine Struktur so wird diese immer mit auf den Stack gelegt (und umkopiert was unnötig ist)
Wenn eine Struktur 4-8 Bytes belegt ist es fast irrelevant, da bei 32Bit Maschinen ein Zeiger auch 4 Bytes belegt.
Wenn du Speicher vom Heap reservierst musst du zwangsläufig mit Zeigern arbeiten.
Wenn du ein Array hast kommst du um Zeiger auch nicht herum

bei C++:
kann man (und sollte man) Referenzen verwenden, diese werden jedoch intern in der Maschine auch als Zeiger realisiert.
 
Tja, also zeiger können ziemlich ärgerlich sein, wenn man nicht mit ihnen umgehen kann.
Aber wenn man es kann, sind sie unverzichtbare hilfsmittel.

Zum einen ist da eben der stack. Alloziere mal 100MB am stück auf dem heap... ups stack overflow exception... geht also net.

Mach das mal als globale variable... äh... 100MB exe dateien werden immer gern gesehen.

bleibt also der Heap. und den heap kann man bekanntlich über Zeiger ansprechen.
Das macht man in C so, in C++, in assembler, in ja was weiß ich wo.

und intern verarbeietet der compiler ja so und so alle datenstrukturen und so weiter wieder als zeiger. Jedes struct wird als zeiger angesprochen, wie sollte es auch anders sein. zumindest wenn es größer als ein DWord is.
 
Zurück