elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C]Duda, typedef.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C]Duda, typedef.  (Leído 2,716 veces)
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
[C]Duda, typedef.
« en: 15 Agosto 2010, 04:00 am »

Este era el post de otra duda, pero como la solucioné antes de que nadie respondiera, economizo, edito y planteo otra  ;D

Typedef permite definir alias para los tipos de variables, de tal forma que si yo hago...

Código:
typedef int entero;
entero a = 5;

Puedo definir la variable "a" como un entero cuyo valor es 5.
Bien, la cuestión es... en mi libro de aprendizaje, vienen la siguientes sentencias:

Código:
typedef int * pint;
int *p = pint(0x1F5);

Lo cual, a mi entender, no tiene ningún sentido, pues declara el alias como un puntero... no le veo la lógica, lo que se pretende hacer con eso. Y más aun, usando "pint" como la llamada a una función  :-\

En fin, gracias por la atención...
Saludos =)


« Última modificación: 15 Agosto 2010, 05:30 am por Binary_Death » En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: [C]Duda, typedef.
« Respuesta #1 en: 15 Agosto 2010, 06:47 am »

Has visto esto?
Código
  1. std::cout << (int)5/2;
Lo que hace es que te imprimirá un 2 osea la parte entera de 5/2.
Es igual si haces:
Código
  1. std::cout << int(5/2);

Ahora imagina que quieres decirle a tu programa que le estas dando un puntero a un entero.

Harías esto:

Código
  1. (int*)0x0001;

ó

Código
  1. typedef int* pint;
  2. pint(0x0001);

Saludos!


En línea

|-
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [C]Duda, typedef.
« Respuesta #2 en: 15 Agosto 2010, 07:42 am »

En la estructura cast... transformamos los dos valores a int, creo recordar.
Entonces... en el caso del puntero, es lo mismo? Pero, dónde se define el puntero?

Código:
(int*)0x0001;

Creamos un puntero a un entero, y ese puntero apunta a la direccion 0x0001, pero donde esta el puntero?  :xD Es decir... por lo que se ahora, un puntero de declara y define así:

Código:
int *p = 0x0001;

Y con eso habré creado un puntero a un entero que apunte a la celda de memoria 0x0001... sin embargo, no entiendo la estructura que me planteas  :-\
Con int ya decimos que apunta a un entero, entonces, por que el cast?

Gracias por ayudar Og. ^^

EDITO:

Pongo algo que hice con lo que me dijiste:

Código:
#include <stdio.h>
int main() {
    int a = 4;
 int *p = (int*)&a;
 printf("%d", *p);
return 0;
}

Pero sigo sin entender, si con "int *p" ya decimos que direcciona un entero, para que el cast  :xD
« Última modificación: 15 Agosto 2010, 07:48 am por Binary_Death » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Cual es la diferencia? Duda con punteros y typedef
Programación C/C++
freecom4ever 6 7,246 Último mensaje 16 Febrero 2012, 17:27 pm
por rir3760
Duda sobre lista de un typedef struct
Programación C/C++
Ccomplica 1 1,936 Último mensaje 1 Noviembre 2013, 22:02 pm
por m@o_614
Duda sobre el typedef en las clases
Programación C/C++
class_OpenGL 7 3,379 Último mensaje 21 Abril 2016, 08:38 am
por class_OpenGL
Suma de angulos. Typedef
Programación C/C++
Bob1098 6 2,032 Último mensaje 31 Agosto 2016, 20:41 pm
por Bob1098
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines