Por supuesto.

En C, por ejemplo, si tienes:

Código:
char c = 'A';

printf("%c - %d", c, c);
Te imprimirá: A - 65. Es el %d el que indica al compilador que debe transformarlo a entero, y en la conversión lo que toma son los códigos ASCII de los caracteres. Por lo que se puede perfectamente hacer estructuras del tipo:

char c;
for (c='A'; c<='Z'; c++){...}

Lo que me refería en tu post, es que el mero hecho de usar punteros no significa que se desaconseje su uso porque en otros lenguajes se pueda hacer lo mismo sin necesidad de hacer uso de ellos, y más si la razón es porque "son complejos" o "es fácil equivocarse"...

Es más, bajo mi punto de vista, es bueno saber manejar punteros desde el principio, y casi debería ser obligatorio que se sepan manejar. De hecho lo correcto es usar punteros, y no dejar que el intérprete del compilador de un lenguaje que no usa punteros, haga el trabajo... Significará que luego puede enfrentar cualquier lenguaje, entendiendo lo que hace por ejemplo un "create" en pascal o un "new" en Java, o también, cómo se maneja un parámetro de entrada/salida en una función.

Si apruebo que es de buenas prácticas, para el que empieza, lo haga con un lenguaje de tipificación fuerte, para evitar asignaciones "semánticamente incorrectas", y que fuerce a un programador a hacer la conversión o casting (significa que el programador sabe lo que está haciendo). Pero desapruebo que se eviten usar lenguajes que necesiten hacer uso de punteros, por el simple hecho de que "es fácil equivocarse" o "son complejos"...

Un saludo.