C++的新手 - &参数的符号前面

Pau*_*ade 0 c++ reference

我是开发人员学习/重新学习/刷新c ++

我正在进行数据库访问我有以下代码,我很难理解在这种情况下&做了什么.

SQLHENV     hEnv = NULL;

if (SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv) == SQL_ERROR)
    {
Run Code Online (Sandbox Code Playgroud)

如果我删除&我得到此错误.

'SQLAllocHandle' : cannot convert parameter 3 from 'SQLHENV' to 'SQLHANDLE *'
Run Code Online (Sandbox Code Playgroud)

起初我以为它只是简单地将此字段作为参考传递,但基于错误,它更像是一些如何允许它转换?

Rei*_*ica 6

当在表达式中作为一元运算符出现时,&是address-of运算符.你展示的代码将指针hEnv进入SQLAllocHandle().

你可能想要一本好的C++书.


Mas*_*Man 5

在当前示例的上下文中,&运算符用于获取变量的地址.

从错误消息中,它看起来好像SQLAllocHandle期望参数3是类型SQLHANDLE *(指向SQLHANDLE).

当你"删除"时&,你传递SQLHENV给它,它无法转换为所需的类型.但是当你是"有"的&,它的工作,因为我猜SQLHANDLEtypedef教育署SQLHENV,或SQLHENV*可转换为SQLHANDLE*因继承或其他原因.

我需要做的猜测,因为签名SQLAllocHandle和的阶级关系SQLHENV,并SQLHANDLE没有在问题中提到.