2010-04-05 7 views
6

Quel est le moyen le plus rapide pour trouver le nombre d'éléments dans un tableau statique et un tableau dynamique?Nombre d'éléments dans le tableau statique et le tableau dynamique

+0

double possible: http://stackoverflow.com/questions/851716/count-repeated-elements-in-an-array-in -c –

+1

Copie possible: http://stackoverflow.com/questions/2347766/how-many-elements-are-full-in-ac-array –

Répondre

10

Il n'existe aucun moyen de trouver le nombre d'éléments dans un tableau créé dynamiquement. Pour un tableau non dynamique, vous pouvez utiliser sizeof(array)/sizeof(type). Cependant, ce n'est pas aussi utile que cela puisse paraître:

void f(int a[]) { 
    // sizeof(a) will be the size of a pointer, probably 4 
} 

int main() { 
    int a[100]; 
    // sizeof(a)/sizeof(int) will be 100 
    f(a); 
} 

En effet, la décomposition des tableaux en pointeurs lorsqu'il est passé aux fonctions. Dans les deux cas, vous devez probablement vous souvenir de la taille du tableau et le passer aux fonctions en tant que paramètre distinct. Ainsi, une fonction somme un tableau (par exemple) ressemblerait à ceci:

int sum(int a[], int n) { 
    int total = 0, i;  
    for (i = 0; i < n; i++) { 
     total += a[i]; 
    } 
    return total; 
} 
+6

Typiquement on utiliserait 'sizeof (array)/sizeof (array [0]) '. De plus, il peut y avoir des moyens non-standard non-portables pour trouver le nombre d'éléments dans un tableau dynamique, mais il est préférable de stocker la taille séparément à la création et de la passer à tout ce qui doit connaître la taille. –

+0

@Dan Oui, en tapant sans y penser - merci. –

+1

@Georg S'il vous plaît ne pas modifier le contenu technique de mes réponses - J'ai écrit le code que j'ai posté assez consciemment. Si vous pensez qu'il peut être amélioré, faites un commentaire ou postez une réponse de votre choix. –

Questions connexes