我有这段代码:
(*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
是一个返回整数的函数指针,其余的我没有得到。有人可以解释一下吗?
该代码不是声明,但可以解释为表达式。
(*I_dont_know())[(int) ((*ptr))]
I_dont_know
。此函数返回指向某事物的指针。ptr
的值并将其转换为int
值。int
值作为[]
(索引)运算符的参数传递给步骤2中返回的对象。在C中,这可能是另一个指针或数组(数组也会衰减到指针)。在C ++中,这也可能是[]
运算符重载的对象。[]
运算符子表达式返回的值(即数组中*ptr
-index处的元素)。假设这是C,那么索引运算符的参数应该转换为size_t
而不是int
。如果它是C ++,那么只有当int
运算符重载专门接受[]
参数操作数时才应该强制转换为int
。