在C中为返回指针的函数分配值有什么作用? *功能=值

时间:2019-02-03 22:48:35

标签: c function pointers

所以我正在看this,而那个家伙一直在使用

uint32_t *internalNodeNumKeys(void *node)
{
    return (uint32_t *)(node + INTERNAL_NODE_NUM_KEYS_OFFSET);
}

*internalNodeNumKeys(root) = 1;

这是做什么的?我记得他在某个地方说过,因为这些函数返回指针,它们可以用作设置器,但是它们设置了什么?

1 个答案:

答案 0 :(得分:2)

该函数返回指向int的指针,表达式*internalNodeNumKeys(root) = 1;解析为:

*(internalNodeNumKeys(root)) = 1;

用于函数调用的后缀运算符(如()的绑定比用于解引用的前缀运算符(如*)的绑定更紧密。

还请注意,internalNodeNumKeys是高度不可移植的:

  • void指针上执行指针算术是不可移植的,应在添加之前将node强制转换为(unsigned char *)
  • node所指向的对象中的任意偏移量作为指向int的指针可能具有未定义的行为,此时程序员正在玩火。