Domanda

Ho cercato una buona spiegazione ma non riesco a trovarne una.

Potrei provare a scriverne uno da solo, ma preferirei che qualcuno con un inglese migliore potesse aiutarmi a spiegarlo per Zan Lynx nel commento qui .

... e sembra che ci dovrebbe essere una buona spiegazione da qualche parte, perché non qui?

È stato utile?

Soluzione

Quando una libreria gestisce alcune strutture di dati per conto di un programma (ad es. le finestre in un'applicazione GUI sono gestite dal sistema operativo), di solito mantiene privati ??i contenuti di tali strutture. Tuttavia, in genere è utile che il programma mantenga alcuni dati aggiuntivi specifici per l'uso del programma di tali strutture. Pertanto, una libreria fornirà spesso l'accesso a un campo (spesso chiamato dati utente ) che memorizza con ciascuna struttura.

Un uso comune del campo dati utente da parte di un programma è di allocare un po 'di memoria ogni volta che il programma richiede alla libreria di creare una struttura e di archiviare il puntatore a quella memoria nel campo dati utente fornito dalla libreria, quindi il termine puntatore userdata .

Altri suggerimenti

Guarda sqlite3_exec () - chiama un callback (terzo parametro) per ogni riga recuperata e passa un puntatore fornito (quarto parametro) in questo callback. Questo può essere un puntatore a qualsiasi oggetto desideri: devi lanciarlo in modo appropriato prima di poter accedere all'oggetto appuntito. Questo oggetto è chiamato oggetto userdata e un puntatore ad esso è chiamato puntatore userdata.

In caso di sqlite3_exec () è possibile passare un puntatore a un contenitore che deve memorizzare tutte le righe della tabella recuperate al completamento della richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top