gpt4 book ai didi

c - OCILib - 变量的可见性

转载 作者:行者123 更新时间:2023-11-30 15:36:39 26 4
gpt4 key购买 nike

我通过指针将变量cn传递给函数myconnect。当进入调试器时,myconnect() 中的 cn 是正确的。但在 main() 中就没有更多内容了。我不能这样做吗(见下面的代码)?当我在 main 中进行初始化和连接时,它起作用了。我可以将 cn 传递给其他函数。但我更愿意将其从那里(主要)排除并具有单独的功能。

int myconnect(OCI_Connection* cn  )
{
if (!OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT))
return 0;
cn = OCI_ConnectionCreate( DB, DBUSER, DBPASS, OCI_SESSION_DEFAULT);
if (cn == NULL) return 0;

return 1;
}

int main()
{
OCI_Connection* cn;

if (myconnect(cn) == 0)
{
dbErr =1;
}
}

最佳答案

变量cn按值传递给函数myconnect,即该函数接收一个副本并为该副本分配一个值。这对 main 没有影响。

要产生效果,您必须通过引用传递它。在 C 中,这意味着您必须传递一个指向变量的指针,该变量本身就是一个指针:

int myconnect(OCI_Connection** cn)
{
if (!OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT))
return 0;
*cn = OCI_ConnectionCreate(DB, DBUSER, DBPASS, OCI_SESSION_DEFAULT);
if (*cn == NULL)
return 0;

return 1;
}

int main()
{
OCI_Connection* cn;

if (myconnect(&cn) == 0)
{
dbErr =1;
}
}

关于c - OCILib - 变量的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22504961/

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