Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将指针数组初始化为NULL_C++_C_Arrays - Fatal编程技术网

C++ 将指针数组初始化为NULL

C++ 将指针数组初始化为NULL,c++,c,arrays,C++,C,Arrays,这是我在这个网站上的第一篇帖子 我正在尝试初始化一个包含30个指针的数组为NULL。数组存储为全局数组,我在init()函数中进行初始化,如下所示: static headerT*free_list[30] init(){ 自由列表[30]={NULL}; } 但是,我得到了以下编译器错误-“error:expected expression before'{'token” 有没有想过我会做错什么 提前谢谢 如果arr是一个由n个元素组成的数组,那么第一个单元格是arr[0],最后一个单元

这是我在这个网站上的第一篇帖子

我正在尝试初始化一个包含30个指针的数组为NULL。数组存储为全局数组,我在init()函数中进行初始化,如下所示:


static headerT*free_list[30]

init(){
自由列表[30]={NULL};
}


但是,我得到了以下编译器错误-“error:expected expression before'{'token”

有没有想过我会做错什么

提前谢谢

  • 如果
    arr
    是一个由n个元素组成的数组,那么第一个单元格是
    arr[0]
    ,最后一个单元格是
    arr[29]
    arr[30]
    在数组之外,引用它会导致各种问题
  • 不能为整个数组赋值。请使用
    for
    循环访问每个单元格
  • 因此,我们得到:

    init() 
    { 
        int i;
        for(i=0; i<30; i++)
            free_list[i] = NULL; 
    }
    
    init()
    { 
    int i;
    
    对于(i=0;i分配了静态存储持续时间的对象,值已初始化。您的指针已初始化为
    nullptr

    我更喜欢memset


    memset(free_list,0x0,30*sizeof(headerT*);

    它们已经初始化。只需删除
    init()
    函数。元素
    free_list[30]
    不存在:数组从
    free_list[0]
    free_list[29]
    在?或?中,默认情况下,只有具有静态存储持续时间的指针才会初始化为
    NULL
    。您还可以通过写入
    T*p[30]={0}将指针(非静态)数组初始化为NULL(0);
    ,但您不能分配这样的值。如果空指针不是由all-bits-zero表示的系统,这将中断。如果列表大小发生变化,它也将中断,您至少可以使用习惯用法
    memset(&x,0,sizeof x)
    以确保写入了正确的内存量。是的,我可以这样做,但给出的示例非常具体,我没有问题给出具体的答案。我为自己编写的这个函数的具体版本是模板化的,但我认为这对于这个问题来说太过分了。