Hola Nataly
La sentencia ++ndigit[c-'0'] en realidad es una forma de incrementar el elemento correspondiente en el arreglo ndigit para el dígito que se está leyendo.
En este caso, c-'0' es una forma de convertir el carácter c, que representa un dígito del 0 al 9, en un número entero del 0 al 9. Esto se debe a que en la tabla ASCII, los caracteres '0' a '9' tienen valores consecutivos, es decir, '0' tiene el valor 48, '1' tiene el valor 49, '2' tiene el valor 50, y así sucesivamente. Por lo tanto, si restamos el valor de '0' (48) al valor del carácter que estamos leyendo, obtendremos el número entero que representa ese dígito.
Entonces, ++ndigit[c-'0'] incrementa el elemento en el arreglo ndigit correspondiente al dígito que estamos leyendo. Por ejemplo, si estamos leyendo el carácter '9', entonces c-'0' será 9, y ++ndigit[c-'0'] incrementará ndigit[9], que es el elemento del arreglo que corresponde al dígito 9.
En resumen, la expresión ++ndigit[c-'0'] es una forma más compacta y eficiente de actualizar el arreglo ndigit para el dígito que se está leyendo, sin tener que usar un bucle o una instrucción condicional para encontrar el índice correspondiente en el arreglo.