C中的解码声明(数组和函数指针的组合)

Decoding declaration(a combination of array and function pointers) in C

我有这段代码:

(*I_dont_know ())[(int) ((*ptr))]

I_dont_know(), a function which takes void and returns a pointer.
ptr is an integer pointer.

据我所知 [(int)((*ptr))] ---> ptr 是一个函数指针,return 是一个整数,其余的我没有得到。有人可以解释一下吗?

该代码不是声明,但可以解释为表达式。

(*I_dont_know())[(int) ((*ptr))]
  1. 不带参数调用函数 I_dont_know。这个函数 returns 指向某物的指针。
  2. 取消引用返回的指针以获取一些对象。
  3. 同时,取消引用 ptr 的值并将其转换为 int 值。
  4. 然后将该 int 值作为参数传递给步骤 2 中返回的那个对象上的 [](索引)运算符。在 C 中,这可能是另一个指针或数组(数组衰减到指针也一样)。在 C++ 中,这也可以是重载 [] 运算符的对象。
  5. 由于此表达式不在赋值的左侧,因此从 [] 运算符子表达式返回的值(即位于 *ptr 索引处的元素array) 将被返回。

假设这是 C,那么索引运算符的参数应该转换为 size_t 而不是 int。如果它是 C++,那么只有在 [] 运算符重载明确接受 int 参数操作数时,才应将其转换为 int