void zeiger
-
hi,
ich möchte an einen void Zeiger
eine unbekannt grosses Array
übergeben und später auslesen.
Ich kann den void-Zeigeraber nicht dereferenzieren...
#include <iostream> using namespace std; void *t; int a[2] = {1,2}, b[3] = {3,4,5}; int *pa = &a[0]; int *pb = &b[0]; int main() { int anz = 1; switch(anz) { case 1: t = pa; break; case 2: t = pb; break; default: cout << "ERROR" << endl; break; } // ??? cout << *t << endl; }
danke für Hinweise,
little_b
-
Du musst ihn in den richtigen Zeigertyp casten, bevor du ihn dereferenzierst. z.B.:
cout << *static_cast<int*>(t) << endl;
-
ein void* enthält ja keine typinformation.
da hilft nur typecastint a[] = {1,2,3}; void *p = a; printf ("%d %d %d\n", *(int*)p, *(int*)p+1, *(int*)p+2);
-
Auf was zeigt denn ein void*. Das muss nicht mal ein dem Compiler bekannte Datenstruktur sein. Wie in der Welt soll der Compiler da dereferenzieren können? Du musst ihm per cast sagen was sich hinter dem void* verbirgt (verbergen soll).
-
thx