Pensé que entendía los conceptos básicos de los punteros, pero después de revisar algo de documentación sobre algunos métodos sqlite3 me lanzaron, por lo que ahora no estoy seguro si mi comprensión es correcta.Necesito una explicación de cómo funcionan los punteros al pasar como función args
Aquí es una llamada a un método de sqlite3:
char* dataFilePath = "foobar.sqlite";
if (sqlite3_open(dataFilePath, &database) != SQLITE_OK) {...}
Y aquí es la declaración cabecera de la función:
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
Por qué es que & base de datos de repente se convierte en un puntero a un puntero?
Otra llamada a un método para cerrar la conexión de la base de datos es: sqlite3_close (base de datos);
con los siguientes en la cabecera de la función:
int sqlite3_close(sqlite3 *);
¿Por qué es esto sólo un puntero, cuando paso en un puntero? ¿No sería esto un puntero a un puntero?
De todos los ejemplos que he visto siempre me pareció el inverso de las funciones anteriores, es decir.
// function
void foo(someDataType *bar) { ... }
// function call
foo(&bar);
Gracias por la ayuda.
Espera, ¿estás preguntando por qué se usó un puntero doble o cómo funcionan los parámetros? – Sean
Supongo un poco de ambos. – chris
Erm, ¿cómo se declara la base de datos? – amaterasu