【发布时间】:2019-12-02 01:17:47
【问题描述】:
*( char** ) 完成什么类型的演员表?
它似乎用** 创建了一个指向指针(“双指针”)的指针。但是括号外的* 让我感到困惑……下面是上下文中的演员表:
void mem_test ( void )
{
void* m1;
void* m2;
...
m1 = 0;
while ( ( m2 = malloc( 10001 ) ) != 0 )
{
*( char** ) m2 = m1; // what does this cast mean?
m1 = m2;
}
...
}
它的另一个令人困惑的变体出现在下面的 sn-p 中。演员在这种情况下完成了什么,与上面的有什么不同?
void mpenter ( void ); // a function with no parameters and no return value
...
uchar* code;
...
*( void ( ** ) ( void ) ) ( code - 8 ) = mpenter; // what does this cast mean?
这种类型的演员的正确名称是什么? IE。我应该搜索什么来了解更多信息?
【问题讨论】:
-
我会搜索“...这就是我的代码审查失败的原因...”:)
-
这不是演员阵容的一部分。这是一个单独的取消引用。你见过
*ptr = 5;吗?就这样。
标签: c pointers casting function-pointers dereference