【问题标题】:C++ type casting interpretationC++ 类型转换解释
【发布时间】:2021-08-31 09:37:12
【问题描述】:

我正在移植一个 C++ 嵌入式代码,偶然发现了这段代码:

*(AppCHRONOAMPCfg_Type**)pCfg = &AppCHRONOAMPCfg;

第一个星号和双星号是什么意思?我猜是关于类型转换 据我了解,这条线为 pCfg 分配内存空间,对吗?

【问题讨论】:

  • *reinterpret_cast<AppCHRONOAMPCfg_Type**>(pCfg) = &AppCHRONOAMPCfg; 可能更清楚...
  • 双星号表示“指向事物的指针”,有时也称为“事物的句柄”(其中句柄是指向指针的指针)。

标签: c++ pointers types casting


【解决方案1】:

没有分配,只是重新解释和分配(pCfg 碰巧指向的任何东西)。

第一个星号是取消引用星号;双精度的属于AppCHRONOAMPCfg_Type** 类型,它是一个指向指针的指针(正如您所怀疑的那样,它在强制转换中)。

更明确的分步版本:

AppCHRONOAMPCfg_Type** configuration = reinterpret_cast<AppCHRONOAMPCfg_Type**>(pCfg);
*configuration = &AppCHRONOAMPCfg;

【讨论】:

  • 旁白:里面可能还有const_cast,我们不知道
猜你喜欢
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多