wie zu verwenden void ** pointer, richtig?

Ich versuche, mit einem Doppel - void pointer, aber ich bin ein wenig verwirrt über die Verwendung.
Ich habe eine struct enthält eine void ** array.

struct Thing{
    void ** array;
};

struct Thing * c = malloc (sizeof(struct Thing));
c->array = malloc( 10 * sizeof(void *) );

Also, Wenn ich zuweisen möchten ein anderes Objekt zu jedem Zeiger, und versuchen Sie, um den Wert abzurufen

 //Option 1
 *(c->array + index) = (void *) some_object_ptr;

 //Option 2
 c->array[index] = (void *) some_object_ptr;

dann habe ich eine andere Funktion, die (void *) itemdie Punkte um jede Zelle, nicht die some_object_ptr.

Wenn ich will, um den Wert abzurufen, die Spitzen, von some_object_ptr,
soll ich tun,

 function return type is 'void *' and takes argument 'void *'
 //Option 3 
 return (void**) item

 //Option 4
 return *((void**)item)?

komisch ist, dass wenn ich in den array die array-subscript-Methode konnte ich nicht verwenden, option 4, option nur 3; und wenn ich *(c->array + index) konnte ich nur opt.4. und nicht opt.3. ..

Kann jemand bitte sagen Sie mir dazu? Wenn ich alle ungültigen Annahmen, dann könnten Sie das bitte korrigieren Sie mich?

InformationsquelleAutor der Frage in His Steps | 2012-01-27

Schreibe einen Kommentar