C/Visual C - Punteros

 
Vista:

Punteros

Publicado por Leo (15 intervenciones) el 18/03/2003 13:47:21
¿Como podria iguala una variable int a un puntero de tipo char?
int b;
char *p;
¿puedo pasar el valor de p a la variable b?¿Como?
Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Punteros

Publicado por chuidiang (677 intervenciones) el 18/03/2003 15:48:20
Lo que te dice Malandrin asigna el contenido de p (un char) al int.

Si lo que quieres es asignar el puntero, puedes hacer un cast

b = (int)p;

Si quieres escribir en pantalla el valor del puntero, puedes probar con
printf ("%p\n", p);
que escribe el puntero en hexadecimal.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros

Publicado por Leo (15 intervenciones) el 18/03/2003 21:46:49
Hola de nuevo, no se porque pero al hacer la asignacion del int = *pchar no me asigna el contenido de pchar si no el numero 49 o 50 que no se lo que significará. Estoy trabajando con estructuras pero debería ser igual que con variables normales.
int anyo es un campo de la estrucutra l. y pcad es un puntero a char.
pcad va guardando cadenas q extrae strtok. Pues es al hacer l.anyo = *pcad donde me asigna un 49 o 50 en vez del contenido de pcad, en este caso una fecha. Si sabeis porque puede ser contestarme!! graciass!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros

Publicado por seba2 (2 intervenciones) el 18/03/2003 22:20:41
Depende de lo que quieras hacer:
Si lo que quieres hacer es que la variable b contenga la direccion de memoria a la que a punta p, entonces se escribe: b=p;
Si no, si quieres que la variable b contenga el valor al que apunta p, entonces escribes: b=*p; El asterisco del puntero precede al operador *=
No hay problemas en el ultimo caso ya que un tipo int puede contener a un char tranquilamente y sin necesidad de moldes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros

Publicado por Leo (15 intervenciones) el 18/03/2003 22:36:03
El problema es que char *pcad no es simplemente un char. En mi pchar es una cadena de caracteres. por ejemplo pcad = "1993".
Entonces al hacer que a = *pcad siendo a una variable int me pone en a el 49 o el 50, asi que creo que habria que hacer algun cambio antes ... m voy a volve loco! ciao!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros

Publicado por Leo (15 intervenciones) el 18/03/2003 22:56:37
Por ejemplo en este programa:

#include <stdio.h>

int main(){
int b=0;
char *pcad=NULL;
pcad= "1993";
b= *pcad;
printf("%d\n" , b);
}

Por qué me impirme el valor 49 ?????? No consigo entenderlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros

Publicado por Endos (58 intervenciones) el 19/03/2003 00:02:13
Te estas liando. Los punteros son direcciones de memoria que apuntan a algo. En tu codigo estas asignando el primer caracter de la cadena "pcad" que es un "1" a la variable entera. El código ASCII del "1" es 49 que es lo que te da como resultado. Para pasar un valor numerico en formato texto a un entero hay que usar strtol():

char *endptr;

b =strtol(pcad,&endptr,10);

printf("%u\n",b);

Si solamente deseas mostrar el valor por pantalla no hace falta que lo pases a entero, con hacer un printf("%s/n",pcad); es suficiente.

Por cierto, no hace falta que hagas
char *pcad=NULL;
pcad= "1993";

Con poner
char *pcad="1993";

es suficiente.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar