[C con Clase] Capitulo 12c

Programante programante en gmail.com
Lun Feb 5 22:18:03 CET 2007


David escribió:
> Pero me surgen más dudas, por ejemplo, sabemos que la definición 
> siguiente:
>     char* p; 
> Significa que "p" apunta a un elemento tipo char pero "p" no es una 
> variable tipo char, o sea, que "p" contiene la dirección de memoria de 
> un elmento que sea char. La pregunta es la siguiente "p" ocupa el 
> tamaño en memoria igual al elemento al que apunta, o "p" por ser un 
> puntero tiene su propia definición de tamaño por el compilador, para 
> ser más claro, el tamaño en bytes de un puntero cualquiera siempre es 
> igual al elemento al que apunta o el compilador define un tamaño 
> genérico en bytes para los punteros según la arquitectura del 
> ordenador o según el propio compilador o tienen que ver los dos.
>
> Mi arquitectura es de 32bit por lo tanto para mi tiene lógica que el 
> puntero, apunte al valor que apunte, siempre tenga el mismo tamaño en 
> mi ordenador, o sea 4bytes, Por ejemplo en una arquitectura de 64bit 
> el puntero tendría un tamaño de 8bytes apunte a char o apunte a int, 
> etc. Pero puedo estar totalmente equivocado, aqui no estoy seguro.
Exacto. El puntero tiene su propio tamaño, que en intel 32 bits será de 
4 bytes. Puedes verlo con sizeof(char*). Otras arquitecturas pueden 
tener distinto tamaño de punteros, ¡e incluso variar el tipo de puntero 
dependiendo de a lo que apunte!


> Es que al fin y alcabo no da problemas, lo que dices tú, "El sistema 
> operativo es quien dicta si esta operación es válida o no.", por lo 
> tanto si el sistema operativo lo admite se puede dejar o lo que 
> conviene realmente es manejar el tamaño exacto de la cadena de caracteres.
Conviene hacer exclusivamente lo que tienes permitido hacer. Supongamos 
que eres un cajero: Es posible que si cada vez que te piden dinero coges 
un poco más no pase nada y en cambio si coges mucho más te despidan. 
¿Acaso significa eso que es seguro coger un poco de más?




Más información sobre la lista de distribución Cconclase