Al ternimar una función, todas sus variables locales "dejan de existir".
Si quieres que siga existiendo siempre (dentro de la función), las puedes declarar como static:
- int nextValue(){ 
-     static int n = 0; 
-     return n++; 
- } 
Cada llamada sucesiva a la función, incrementará ese n.
Con respecto a los arrays, el funcionamiento es el mismo. Arrays, que no punteros apuntandoa  memoria dinámica.