如何在声明之前使用变量?

ssj*_*ssj 6 c initialization sizeof

我对dictCreate()文件dict.c中的一个函数感到困惑redis.我要在这里粘贴代码:

/* Create a new hash table 
 * T = O(1)
 */
dict *dictCreate(dictType *type, void *privDataPtr) {
    dict *d = zmalloc(sizeof(*d));
    _dictInit(d, type, privDataPtr);
    return d;
}
Run Code Online (Sandbox Code Playgroud)

变量d用于zmalloc(sizeof(*d)),但理论上它将在执行此行时存在.所以我的问题是如何d在声明之前使用变量?

Sou*_*osh 7

sizeof不是一个功能,它是一个运营商.它在编译时执行(精确评估),因此您考虑的范围生命周期d此处不适用.它只需要知道的是类型*d,并且是在编译时已知.足够.