A ver si alguien sabe resolvermelas.
Estoy leyendo el libro de Anaya de programación en C/C++, asi que hay como una mezcla de ambos, pero bueno.
Lo primero, en relación con los punteros. A ver si consigo entenderlos, porque la explicación me cuadra, pero luego cuando veo como se usan en ejemplos, se me descuadran.
Vale, el libro dice que los punteros son un tipo de variables que almacenan direcciones de memoria, concretamente almacenan el numero de la dirección de memoria, no la dirección en si. Asi que tenemos tres posibilidades.
Puede aparecer en el código:
*puntero = &variable; //Significaria que el puntero contiene el numero de la direccion en memoria de esa variable.
*puntero, sin mas, que se utiliza para referirse al valor de la variable cuyo numero de direccion se contiene en ese puntero.
Y por ultimo "puntero", sin mas, sin operadores, y sin asignaciones, que contiene el numero de direccion de la variable a la que apunta. Ok.
Pero luego, lo veo en la práctica y me encuentro esto.
Si no se entiende, intento subir una foto mejor.
Vale, se define el puntero p de tipo char.
Y luego, ¿se le asigna a p un contenido distinto a un numero de direccion en memoria de una variable con el "p = strtok(palabras, ",");" o contiene el numero de direccion del resultado que se obtenga de ejecutar la funcion strtok?¿Y si es asi, por que no hay un operador &? Directamente, ¿que es p, ahi, que esta haciendo, cual es su resultado? Porque luego hace un printf p, directamente, sin asterisco y sin nada que de acuerdo con lo que se explica en la definicion de puntero deberia imprimir en pantalla el numero de direccion de memoria de una variable, y no el valor de una variable. Me descoloca.
Por cierto, ¿como se hace en c++ para que la consola no se cierre de golpe al ejecutar un programa simple? Por ejemplo un printf sin mas, lo ejecuta y en un microsegundo se cierra. Lo ha ejecutado bien, pero se cierra. ¿se puede evitar? No me funciona getchar, getche y esas cosas.
Tenia varias dudas chorra mas, pero no me acuerdo.