Come posso verificare se un elemento in una matrice è vuoto in C?Come verificare se un elemento è nullo in una matrice in C?
if(array[i] == NULL)
Non sembra funzionare.
Come posso verificare se un elemento in una matrice è vuoto in C?Come verificare se un elemento è nullo in una matrice in C?
if(array[i] == NULL)
Non sembra funzionare.
Cosa intendi con vuoto?
Quando un programma C viene eseguito, le variabili che non si inizializzano esplicitamente hanno valori imprevedibili.
è necessario impostare tutte le celle di matrice a NULL (o 0, o per qualsiasi valore rappresenta Emptyness nella logica del programma) e quindi è possibile verificare in modo che hai fatto:
int *array[3] = { NULL, NULL, NULL }; // array of three "empty" pointers
...
for(i = 0; i < 3; ++ i) {
if(array[i] == NULL) {
// i-th cell is "empty"
}
}
+1 per sottolineare la mancanza di bug di inizializzazione - probabilmente cosa sta succedendo qui. –
'int * array [3] = {NULL}' dovrebbe essere sufficiente per annullare tutti gli elementi dell'array. – Uila
@Uila: in pratica si, ma penso che potrebbe essere meno chiaro e fuorviante, dal momento che funziona solo per inizializzare un array su 0. Non è possibile utilizzare tale scorciatoia per inizializzare tutti gli elementi di un array su 1, e inoltre 'NULL 'potrebbe essere diverso da 0. – peoro
Domanda risposta:
Cosa hai postato è il codice corretto.
Elaborazione:
Se "non sembra funzionare", forse il problema non si trova in questa posizione nel codice. Se pubblichi un esempio più completo di ciò che hai, del comportamento previsto del codice e del comportamento effettivo, potremmo essere in grado di aiutarti.
Supponendo che array
sia effettivamente un array di puntatori, la singola riga di codice fornita dovrebbe effettivamente verificare che l'elemento nell'indice i
sia NULL.
Si noti tuttavia che se array non è inizializzato correttamente (ad esempio: fornire un valore iniziale a ogni cella), la matrice molto probabilmente contiene immondizia e la condizione molto probabilmente finirà per essere falsa.
Che cosa non funziona? Quella riga di codice non è di grande aiuto. Cos'è 'array', dove viene inizializzato? – casablanca
Si prega di definire cosa intendi per "non funziona" - non si compila? Il comportamento di runtime è diverso da quanto previsto? (Forse hai dimenticato di inizializzare il contenuto dell'array su NULL prima?) – cdhowie
Penso che questo sia il problema di cdhowie dato che sono abituato a java che tutto è inizializzato su null. Qual è l'inizializzazione predefinita di un elemento in C. – Alex