Hola a todos, recurro a los conocedores de c, estoy algo trabado tratando de entender como funcionan los punteros, tengo una base pero muchas cosas aun me confunden como el tratamiento de los datos y elsignificado de cada operacion
si llamo una funcion que escribe en pantalla lo que escribo, asi
EscribirEnPantalla("Uso de punteros");
definida como
void
EscribirEnPantalla(char* X)
{
Escribir(X);
}
void
Escribir(char* Z)
{
//'indice' y 'Buffer' definido en algun lugar...
//Buffer sera un arreglo de salida para la impresion de la cadena
Buffer[indice++] = *Z++;
}
¿como es el comportamiento de los punteros X y Z?
Yo entiendo que al escribir 'Uso de punteros' es alojar en memoria esta cadena completa.
y en la función
EscribirEnPantalla, al pasar como argumento un puntero a una variable de tipo char, es como hacer:
X = AEsaPosiciónDeMemoria; ( o sea, 'X' apunta al primer elemento de la cadena)
Ahora, dentro de la función
EscribirEnPantalla hay una función llamada
Escribir, lo que no entiendo es ¿por que se pasa sin su operador * a X?, lo que puedo interpretar es que poner 'X' a secas es como referenciar a su contenido, es decir, 'X' es toda la cadena 'Uso de punteros' y que considerando la definición de la función
Escribir, la cual pasa un puntero a una variable de tipo char, seria como escribir:
Z = X, (o sea, 'Z' apunta a 'X', con X = 'Uso de punteros' con lo cual Z también apunta a esa cadena)
Ahora, en la funcion,
Escribir, interpreto que se usa el operador * por que en realidad se esta usando la cualidad de apuntador de memoria, y el ++, incrementa la posicion de apuntamiento y es posible llenar el Buffer con el contenido de lo que se escribio en la memoria, o sea se va ir alojando en el Buffer las letras 'U', luego la 's', despues la 'o' y asi sucesivamente hasta completarlo.
La verdad que todo este arroz con mango me enreda un poco, pero me gustaria saber si estoy en lo correcto y alguien me puede aclarar esta dudas existenciales.