试图破译以下功能。
我知道pCfg
是任何类型的指针,但是我不确定*(AppBIACfg_Type**)pCfg = &AppBIACfg;
分配给&AppBIACfg
的地址。
AD5940Err AppBIAGetCfg(void *pCfg)
{
if(pCfg){
*(AppBIACfg_Type**)pCfg = &AppBIACfg;
return AD5940ERR_OK;
}
return AD5940ERR_PARA;
}
答案 0 :(得分:3)
它将获取全局AppBIACfg
变量的地址,并将其存储在pCfg
指向的内存中。强制类型转换对于类型正确性是必需的。
所以,如果您有类似的东西:
AppBIACfg_Type *foo;
AppBIAGetCfg(&foo);
等同于
foo = &AppBIACfg;
答案 1 :(得分:0)
对指针和括号语法感到困惑
(AppBIACfg_Type**)pCfg
:Tye将类型为pCfg的任何类型强制转换为AppBIACfg_Type
双指针。
*(AppBIACfg_Type**)pCfg
:(请注意起始星号);取消引用该双指针,检索单个指针。
... = &AppBIACfg
:将AppBIACfg
的内存地址分配给单个指针。
所以...
该表达式将AppBIACfg
的内存地址分配给AppBIACfg_Type
指针,该指针是从void
强制转换而成的。