初始化一个指向具有NULL值的类的指针

时间:2009-08-27 03:44:00

标签: c++ arrays pointers

我想初始化一个指向我制作的NODE结构的指针数组

struct Node{
    int data;
    Node* next;
};

the private member of my other class is declared as

Node** buckets;

目前已初始化为     buckets = new Node * [SIZE]

无论如何都要初始化数组以使其成员指向NULL或其他预定义的Node指针?

编辑:我正在寻找一种初始化它的方法,而不是试图生成一个for循环来遍历整个数组长度。数组的大小在运行时确定。

编辑2:我试过std :: fill_n(buckets,SIZE_OF_BUCKET,NULL);但编译器给出错误“无法从'const int'转换为'Node *'”我正在使用visual studio 2008.我有什么问题吗?

2 个答案:

答案 0 :(得分:7)

首先,最简单的解决方案是执行以下操作:

Node** buckets = new Node*[SIZE]();

如前所述litb,这将初始化SIZE指向空指针的指针。

但是,如果您想执行Node **buckets之类的操作并初始化指向特定值的所有指针,那么我建议 {{1} std::fill_n }}

<algorithm>

这会在分配后将每个Node **buckets = new Node*[SIZE]; std::fill_n(buckets, SIZE, p); 设置为Node*

此外,如果您希望Node在构造中具有合理的成员值,那么正确的方法是使用构造函数。像这样:

p

这样你可以这样做:

struct Node {
    Node() : data(0), next(NULL){}
    Node(int d, Node *n = NULL) : data(d), next(n) {}

    int data;
    Node* next;
};

它将使用0和NULL或

正确初始化
Node *p = new Node();

最后,这样做:

Node *p = new Node(10, other_node);

将构造Node *buckets = new Node[N](); N个对象并默认构造它们。

答案 1 :(得分:1)

如果你的数组指的是数组buckets,那么是的。只需设置buckets = NULL

编辑:根据您的问题编辑,只需使用memset。

memset(buckets, 0, NUM_ELEMENTS_IN_BUCKETS*sizeof(Node*));