PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zeiger auf void



sven1978
18-07-2003, 13:28
Kann mir jemand sagen wofuer ich den void zeiger brauchen kann?um zu kompilieren
muest ihr die zeile auskommentieren mit cout.....*universal
#include <iostream.h>

int main()
{
int *ZgInt;
float *ZgFloat;
int Schwein = 7, Hund = 27;
float x = 1.2345, y = 32.14;
void *universal;

ZgInt = &Schwein;
*ZgInt += Hund;
cout << "Schwein hat jetzt den Wert " << *ZgInt << "\n";
universal = ZgInt;

ZgFloat = &x;
y += 5 * (*ZgFloat);
cout << "y hat jetzt den Wert " << y << "\n";
universal = ZgFloat;
cout << "Inhalt von Universal ist jetzt "<< *universal; //Diese Zeile tut nicht(Zeigerop. ungueltig)

const char *Name1 = "Johann"; // Wert kann nicht verändert werden
char *const Name2 = "Johann"; // Zeiger kann nicht verändert werden

return 0;
}

wraith
18-07-2003, 14:02
Du kannst einen void Pointer nicht dereferenzieren,wenn müßtest du ihn vorher auf einen Typ casten.
Ein void Pointer ist ein generischer Pointer,der auf alles und nichts zeigen kann,und wird in C oft benutz,um allgemeine Algorithmen schreiben zu können.
In C++ ist der Sinn von void Pointern stark eingeschränkt.

Btw.



const char *Name1 = "Johann"; // Wert kann nicht verändert werden

char *const Name2 = "Johann"; // Zeiger kann nicht verändert werden

Die zweite Zeile ist falsch.Du kannst den String "Johann" auf keinen Fall verändern,weil der String in einen Read-Only-Speicherbereich abgelegt ist.
Nur wegen der C Verwandschaft erzeugt die zweite Zeile keinen Compilerfehler.