Buena tarde, no seria ptro = &num ? y no *ptro = &num?... y luego, si se quiere mostrar el valor de num a través de su dirección con el puntero, entonces mostramos printf("%d ", *ptro).
Muy buena observación. Quizas el ejemplo que di no es muy acertado. Lo que pasa es que yo le estoy asignando el valor al mismo tiempo que estoy declarando la variable, el * en ese contexto quiere decir que estoy declarando una variable puntero, en cambio cuando se usa el * delante de la variable en otro contexto ahi hace referencia a la indireccion y es asi como vos decis.
Sino que me quedé pensando porque el * lo que hace es acceder al valor contenido en la dirección de num, por tanto, cuando se declara que *ptro = &num, estaríamos diciendo que a *ptro se le asigna la dirección de num y no el valor contenido en esa dirección.
Si pero en el contexto de una declaracion de la variable, el * tiene otro significado como te habia dicho, que es el de indicar que estamos en presencia de una variable puntero. Recordá que la parte de declaraciones de variables es antes a que se ejecuten las instrucciones de C. int *ptro = &num es distinto de *ptro = &num. Una es una declaracion de variable y al mismo tiempo inicializacion y la otra es una asignación. En la segunda es efectivamente una indireccion. Son cuestiones de C que a veces hacen dificil entender los punteros.
Todo lo que se quiere es actualizar desde la funcion, el arreglo de caracteres en main() enviado por referencia. Estoy bloqueado, agradecere tu ayuda...
#include #include #include #include #include // Conversion de Double a String, Paso por Referencia a Funcion de Arreglo de Caracteres int main() { char fstr[15]={0},*ss; int fDMSTR(); double angNUM=-76.51675;
// Puntero a Cadena ss=fstr;
// Llamada a funcion y paso por Referencia fDMSTR(angNUM,ss);
// Contenido Puntero Remoto Actualizado desde funcion en Main(ahora angSTR) printf(" Contenido de Puntero ss (String value) = %s ",ss);
return 0; } /*Convierte Double a String*/ int fDMSTR(double angDEG, char *pp) { char angSTR[15]={0},*hh; float angTXT;
// Asignacion Double a Float angTXT=angDEG;
// Mostrando Double a Float printf(" Double (%lf) to Float (%f) ",angDEG,angTXT); // Puntero Local apunta a Puntero Remoto hh=pp;
// Conversion Float to String sprintf(angSTR,"%.5f",angDEG);
// Mostrando Float to String printf(" Float (%f) to String (%s) ",angTXT,angSTR);
// Actualizacion de Puntero Remoto con valor convertido hh=angSTR;
// Visualizacion Contenido Puntero Remoto Actualizado, desde Funcion (ahora angSTR) printf(" Contenido de Puntero hh (String value) = %s ",hh);
Me gustó que esté explicado breve y detalladamente.
Una genialidad que bien explicado Felicitaciones y MUCHAS GRACIAS por tanto aporte!!!!!
Facu, gracias por tu aporte al conocimiento.
Muy buena explicación de punteros.
Muchas gracias hermano al fin lo entendí bien
Sii lo explico re bien el pibe, es un tema medio confuso de entender
me tuve que tomar 1 de omega 3 para entenderlo al toke
Gracias.
Buena tarde, no seria ptro = &num ? y no *ptro = &num?... y luego, si se quiere mostrar el valor de num a través de su dirección con el puntero, entonces mostramos printf("%d
", *ptro).
Muy buena observación. Quizas el ejemplo que di no es muy acertado. Lo que pasa es que yo le estoy asignando el valor al mismo tiempo que estoy declarando la variable, el * en ese contexto quiere decir que estoy declarando una variable puntero, en cambio cuando se usa el * delante de la variable en otro contexto ahi hace referencia a la indireccion y es asi como vos decis.
Sino que me quedé pensando porque el * lo que hace es acceder al valor contenido en la dirección de num, por tanto, cuando se declara que *ptro = &num, estaríamos diciendo que a *ptro se le asigna la dirección de num y no el valor contenido en esa dirección.
Si pero en el contexto de una declaracion de la variable, el * tiene otro significado como te habia dicho, que es el de indicar que estamos en presencia de una variable puntero. Recordá que la parte de declaraciones de variables es antes a que se ejecuten las instrucciones de C.
int *ptro = &num es distinto de *ptro = &num. Una es una declaracion de variable y al mismo tiempo inicializacion y la otra es una asignación. En la segunda es efectivamente una indireccion. Son cuestiones de C que a veces hacen dificil entender los punteros.
Todo lo que se quiere es actualizar desde la funcion, el arreglo de caracteres en main() enviado por referencia. Estoy bloqueado, agradecere tu ayuda...
#include
#include
#include
#include
#include
// Conversion de Double a String, Paso por Referencia a Funcion de Arreglo de Caracteres
int main()
{
char fstr[15]={0},*ss;
int fDMSTR();
double angNUM=-76.51675;
// Puntero a Cadena
ss=fstr;
// Llamada a funcion y paso por Referencia
fDMSTR(angNUM,ss);
// Contenido Puntero Remoto Actualizado desde funcion en Main(ahora angSTR)
printf("
Contenido de Puntero ss (String value) = %s
",ss);
return 0;
}
/*Convierte Double a String*/
int fDMSTR(double angDEG, char *pp)
{
char angSTR[15]={0},*hh;
float angTXT;
// Asignacion Double a Float
angTXT=angDEG;
// Mostrando Double a Float
printf("
Double (%lf) to Float (%f)
",angDEG,angTXT);
// Puntero Local apunta a Puntero Remoto
hh=pp;
// Conversion Float to String
sprintf(angSTR,"%.5f",angDEG);
// Mostrando Float to String
printf("
Float (%f) to String (%s)
",angTXT,angSTR);
// Actualizacion de Puntero Remoto con valor convertido
hh=angSTR;
// Visualizacion Contenido Puntero Remoto Actualizado, desde Funcion (ahora angSTR)
printf("
Contenido de Puntero hh (String value) = %s
",hh);
return 0;
}