main 函数
int main() {
sqlite *pDb;
openDataBase(pDb);
return 0
}
错误的openDataBase() 函数
int OpenDataBase(sqlite3 *pDb_f) {
int rc;
rc = sqlite3_open("sqlite.db", &pDb_f);
if (rc == SQLITE_OK) {
// success! return 0
return 0;
} else {
// fail! return 1
return 1;
}
}
main 函数
int main() {
sqlite *pDb;
openDataBase(&pDb);
return 0
}
正确的 openDataBase() 函数
int OpenDataBase(sqlite3 **ppDb_f) {
int rc;
rc = sqlite3_open("sqlite.db", ppD_f);
if (rc == SQLITE_OK) {
// success! return 0
return 0;
} else {
// fail! return 1
return 1;
}
}
错误分析:
在原来的 openDataBase() 函数中,pDb 传递给形参 pDb_f,openDataBase() 只是对形参 pDb_f 进行了修改,pDB 并没有被改变。改正之后,pDb 将自己的地址传递给形参 ppDb_f,openDataBase() 函数对 ppDb_f 的改变将直接影响 pDb。