2012-04-23 14 views
9
static char* theFruit[] = { 
    "lemon", 
    "orange", 
    "apple", 
    "banana" 
}; 

Sé que el tamaño es 4 mirando esta matriz. ¿Cómo encuentro programáticamente el tamaño de esta matriz en C? No quiero el tamaño en bytes.C buscar tamaño de matriz estática

Respuesta

25
sizeof(theFruit)/sizeof(theFruit[0]) 

Tenga en cuenta que sizeof(theFruit[0]) == sizeof(char *), una constante.

+1

¿Funcionará eso en todos los casos? –

+0

Sí, es exactamente la forma de hacerlo. Es por eso que está obteniendo +1 s .... :-). Pero solo con arreglos, como lo tienes en tu pregunta. No con punteros. –

+0

@eat_a_lemon: depende de lo que llame a cada caso :) Funciona para arrays estáticos y automáticos, no 'malloc''d. Tenga en cuenta que el tamaño de la matriz siempre es un múltiplo del tamaño del primer elemento, por lo que se garantiza que la división funciona, y que 'sizeof' solo mira los tipos, por lo que incluso funciona para las matrices con cero elementos. –

Cuestiones relacionadas