我曾经认为我理解指针的基础知识,但是在查看一些sqlite3方法的文档后,我感到困惑了,现在我不确定我的理解是否正确。
这里是一个调用sqlite3方法的示例:
char* dataFilePath = "foobar.sqlite";
if (sqlite3_open(dataFilePath, &database) != SQLITE_OK) {...}
这里是函数头的声明:
int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
为什么&database 突然变成了一个指向指针的指针?
关闭数据库连接的另一种方法调用是: sqlite3_close(database);
函数头如下:
int sqlite3_close(sqlite3 *);
当我传入一个指针时,为什么这只是一个指针?难道这不应该是指向指针的指针吗?
从我看到的所有示例中,它似乎总是与上面的函数相反。
// function
void foo(someDataType *bar) { ... }
// function call
foo(&bar);
感谢您的帮助。