[C]Duda, typedef.

Iniciado por Binary_Death, 15 Agosto 2010, 04:00 AM

0 Miembros y 2 Visitantes están viendo este tema.

Binary_Death

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...

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:


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 =)

Og.

Has visto esto?
Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
(int*)0x0001;

ó

Código (cpp) [Seleccionar]
typedef int* pint;
pint(0x0001);


Saludos!
|-

Binary_Death

#2
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?

(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í:

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:


#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