el ambito de una variable una variable automatica puede ser menor que una funcion? una instruccion por ejemplo:
- for (auto int i = 5; i < count; ++i) 
- { 
- 	/* code */ 
- } 
Es decir, que el valor 5 para la variable solo valga para este bucle
Correcto. El ámbito o alcance de una variable declarada dentro un bloque inicia justo después de su declaración y continua hasta el termino de este (del bloque).
Y se podria utilizar otro?, asi por ejemplo:
- for (static int i = 0; i < count; ++i) 
- { 
- 	/* code */ 
- } 
No.
Primero porque en C99 y C11 es posible declarar variables locales a los bucles "for" pero solo pueden incluir los calificadores "register" y "auto", utilizar (como en tu caso) "static" no es valido.
Segundo porque "static" no afecta el alcance de una variable sino su tipo de almacenamiento (en buen cristiano: la duración o "vida" de la variable):
* Las variables automáticas se crean justo en su declaración y desaparecen al terminar su ámbito (el bloque al que pertenecen).
* Las variables estáticas se crean, conceptualmente, justo antes de iniciar el programa y se inicializan con el valor indicado (si no existe su valor inicial es 0, 0.0 o NULL dependiendo del caso). Ellas desaparecen justo antes de terminar la aplicación.
Un programa de ejemplo:
- #include <stdio.h> 
- #include <stdlib.h> 
-   
- void f(void); 
- void g(void); 
-   
- int main(void) 
- { 
-    int i; 
-   
-    for (i = 0; i < 5; i++) 
-       f(); 
-   
-   
-    for (i = 0; i < 5; i++) 
-       g(); 
-   
-    return EXIT_SUCCESS; 
- } 
-   
- void f(void) 
- { 
-    int i = 100; 
-   
-    i++; 
- } 
-   
- void g(void) 
- { 
-    static int i = 200; 
-   
-    i++; 
- } 
Y su salida es:
100
100
100
100
100
----
200
201
202
203
204
Un saludo