gpt4 book ai didi

c++ - Sqlite3,我不明白为什么我的指针返回为空

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:34 24 4
gpt4 key购买 nike

我正在编写一个打开数据库的函数,到目前为止它是这样的:

bool
Sqlite3::openDB(std::string filename, sqlite3* db)
{
std::ifstream file ( filename.c_str() );
if( !file )
{
std::cerr << "Can't open database, file not found. " << std::endl;
return false;
}
file.close();

if( sqlite3_open(filename.c_str(), &db) )
{
std::cerr << "Can't open database: " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
return false;
}
std::cout << (int)db << std::endl; // added to check the pointer (3)
return true;
}

在 main() 中:

int main(int argc, char **argv)
{
sqlite3 *db = nullptr;

std::cout << (int)db << std::endl; // (1)

// Open Database
sqlite3_engine.openDB("./bedrock.db",db);
std::cout << (int)db << std::endl; // (2)

/*...*/

}

在 (1) 我得到了 null,在 (3) 我得到了一些不为 null 的东西但是在 (2) 我得到了一些 null 但我不明白为什么......

最佳答案

函数参数按值传递。 openDB() 获取 db 变量的拷贝,修改拷贝并打印它。原始变量没有被修改。

如果你想修改参数,通过引用传递(例如作为sqlite3 *&)。

关于c++ - Sqlite3,我不明白为什么我的指针返回为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27905219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com