C 重新初始化指针的全局数组

C 重新初始化指针的全局数组,c,pointers,struct,global,C,Pointers,Struct,Global,我有一个struct类型,我想初始化指向该类型的指针的全局数组。 所以我做了static block_t*list_array[9]={NULL}声明并将其初始化为null 该程序预计会被重复调用,这意味着必须重新初始化全局变量,因此当我设置静态block_t*list_array[9]={NULL}

我有一个struct
类型
,我想初始化指向该类型的指针的全局数组。 所以我做了
static block_t*list_array[9]={NULL}
声明并将其初始化为null

该程序预计会被重复调用,这意味着必须重新初始化全局变量,因此当我设置
静态block_t*list_array[9]={NULL}
所以我尝试在数组中循环,并将每个数组设置为
NULL
,就像这样-


for(int i=0;i
for(size\u t i=0;i)您缺少一些重要信息:(1)您的声明在哪里?在文件级别?在函数内部?(2)您试图从何处访问它?同一个文件?不同的文件?不同的功能?问题无法从您发布的信息中重现。请提供。如果
list\u array
是全局的,那么它不需要是
static
,因为它的存储时间是在程序的整个生命周期内,并且因为它是一个数组pe,它可以初始化。Re“当我在初始化中再次设置
静态块\u t*列表\u数组[9]={NULL};
时…”这是否意味着您已经在另一个块范围中定义了另一个数组,因此它正在对第一个数组进行阴影处理?您只能定义变量的一个实例一次。我已经添加了更多的信息和细节,我也理解您关于阴影处理的说法,但是如果我想重新初始化全局对象,我将如何操作?使用
memset
或一圈?
static block_t *find_bucket(size_t bucket_size) {
    block_t *free_start;
    for (int i = 0; i <= 7; i++) {
        if (bucket_size <= (size_t)buckets[i]) {
            free_start = list_array[i];
            return free_start;
        }
    }

    free_start = list_array[8];
    return free_start;
}