memset指针数组的正确方法是什么?

Pal*_*han 8 c c++

如果我有类型的指针,T (T*)并且我有一个数组,T* array[N]这两个方法是否允许我稍后检查哪些条目是空指针懒惰地初始化每个桶中的东西?

memset(array, 0, sizeof(T*)*N);

要么

for (int i = 0; i < N; ++i)
    array[i] = NULL;
Run Code Online (Sandbox Code Playgroud)

memset电话会让我以后再做if (array[i] == NULL) ...吗?

如果不是,我不想引入未定义的行为..

bam*_*s53 10

虽然技术上不需要空指针值是所有零位,但我不知道任何系统并不是所有零位.所以这两种方法都应该有用

然而,有一种更简单的方法来初始化一个数组,即使在一些邪恶的实现上也会设置正确的空指针值:

T *array[N] = {};
Run Code Online (Sandbox Code Playgroud)

或者,如果您动态分配它:

T **array = new T*[N]();
Run Code Online (Sandbox Code Playgroud)