【发布时间】:2020-05-21 10:18:07
【问题描述】:
我正在尝试了解以下情况:
我们声明了一个指向 const PowerManStateType 的类型指针的 const 变量 pfPowerManStates。
PowerManStateType 是一个函数指针 - uint8 (*PowerManStateType)(void);
换句话说,pfPowerManStates 是一个指向函数指针类型的 const 变量的 const 指针。
pfPowerManStates的定义:
const PowerManStateType* const pfPowerManStates = &(pfStates[0]);
它指向一个充满函数指针的数组
到目前为止一切顺利。但后来我看到下面的说法:
NewPowerModeL = pfPowerManStates[CurrentPowerMode]();
这里我们将pfPowerManstate 的值分配给某个变量。
所以,我不能把它缠在我的头上。
声明中没有两个const 关键字是否意味着我们只能阅读非常
数组(&(pfStates[0]) 的第一个值?
我的理解如下:
我有一个 const 类型的 const 指针,指向函数,它接受(void)参数并返回一个 int。
对于它的声明,这个 const 指针接收函数数组pfStates[X] 中第一个函数的地址值,并且由于它的 const,我们不能指向数组pfStates[X] 中的另一个函数。
在这一点上我很困惑,阅读了 5 次帖子并且变得更加困惑,所以我将发布它并希望最好。
谢谢。
【问题讨论】:
-
您正在调用该函数,并分配返回值不是吗?行尾的那些小括号很重要。
-
不要发布文本图像,而是将文本复制粘贴为文本。我想将一些“文本”复制粘贴到答案中,但这是不可能的,因为它是图像。
-
是的,我相信。但是我为什么要调用不同的函数,指针 const 不正是指向第一个函数吗?
-
标签行下方有一个
edit链接。