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

时间:2015-08-05 15:07:37

标签: 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;
}

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

3 个答案:

答案 0 :(得分:7)

sizeof不是函数,它是一个运算符。在编译时执行(精确评估),因此范围生命周期您正在考虑{{1 },不适用于此处。它需要知道的是d类型,这在编译时是已知的。足够的。

答案 1 :(得分:1)

声明

dict *d = zmalloc(sizeof(*d));  

相当于

dict *d;
d = zmalloc(sizeof(*d));  

因此,dict *dd声明为指向dict类型和= zmalloc(sizeof(*d));用于初始化的指针。 dict *d = zmalloc(sizeof(*d));d声明为dict *,然后将其初始化为单行。

答案 2 :(得分:1)

您的假设是错误的,该对象从开始初始化的<input type="text" class="form-control" name="contact-name" id="contact-name" placeholder="First & Last name" /> ^^^^ This is missing for all form fields 符号开始存在。例如,在初始化程序中,您可以使用正在初始化的对象的地址。

此外,此处不需要访问对象本身,=仅使用此类型的类型。