static void* array[1024] = {0};
o, come sottolinea kmkaplan nel commento fare:
static void* array[1024];
anche se io preferisco la prima soluzione solo per ricordare me che è impostato su zeri (il compilatore non dovrebbe generare alcun codice per questo a meno che non sia cerebralmente morto).
Non è necessario memset perché le variabili a livello di file sono inizializzate a zero in ogni caso.
Se è necessario ripristinare loro di NULL ad un certo punto dopo l'avvio, l'uso:
memset(array, 0, sizeof(array));
Questo funziona sulla maggior parte delle piattaforme (ognuno che abbia mai visto e questo è un bel po '), in quanto la il puntatore nullo è in genere zero bit. Ma la norma non garantisce questo modo, su queste piattaforme oscure, è più sicuro fare:
for (i = 0; i < sizeof(array)/sizeof(void*); i++)
array[i] = NULL;
Sono curioso: qual è un esempio di un sistema per il quale il puntatore 0x00 è valido? – Crashworks
Non ne ho mai visto uno (anche quelli incorporati), @Crashworks, ma lo standard dice che sono possibili, quindi è una buona idea tenerlo in considerazione se c'è una possibilità che il software possa mai funzionare lì. Il pragmatismo mi permette di ignorare tranquillamente questa regola :-) – paxdiablo
@Crashworks: vedere http://www.lysator.liu.se/c/c-faq/c-1.html#1-14 – Christoph