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 =)
Has visto esto?
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:
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:
(int*)0x0001;
ó
typedef int* pint;
pint(0x0001);
Saludos!
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