¿Cuántos bytes ocupa un puntero en lenguaje C?
Por ejemplo, en el antiguo sistema de 16 bits, el puntero era de 2 bytes. Hoy en día, generalmente es un sistema de 32 bits, por lo que son 4 bytes.
Un puntero es una variable especial en la que el valor almacenado se interpreta como una dirección en memoria. Para comprender un puntero, debemos comprender cuatro aspectos del puntero: el tipo de puntero, el tipo apuntado por el puntero, el valor del puntero o el área de memoria apuntada por el puntero y el área de memoria ocupada por el puntero. sí mismo.
Datos extendidos:
1. Tipo de puntero
Desde un punto de vista sintáctico, solo necesita eliminar el nombre del puntero de la declaración de puntero, dejando es el tipo de puntero. Este es el tipo de puntero en sí. Echemos un vistazo al tipo de puntero en el Ejemplo 1:
(1)int * ptr; //El tipo de puntero es int*
(2)char * ptr; //El tipo de puntero es char*
(3)int * * ptr; //El tipo de puntero es int**
(4)int(* ptr)[3 ]; // El tipo de puntero es int(*)[3]
(5)int *(* ptr)[4] //El tipo de puntero es int*(*) [4]
2. El tipo señalado por el puntero
Cuando accede al área de memoria señalada por el puntero, el tipo señalado por el puntero determina cómo trata el compilador el contenido. del área de memoria como.
Sintácticamente, solo necesita eliminar el nombre del puntero y el declarador del puntero * a la izquierda del nombre en la declaración de declaración del puntero. Lo que queda es el tipo señalado por el puntero. Por ejemplo:
(1)int * ptr; //El tipo señalado por el puntero es int.
(2)char * ptr; //El tipo señalado por el puntero es char.
(3)int * * ptr; //El tipo señalado por el puntero es int*
(4)int(* ptr)[3]; por el puntero es int()[3]
(5)int *(* ptr)[4] //El tipo señalado por el puntero es int*()[4]
3. Puntero El valor o área de memoria o dirección señalada por el puntero.
El valor del puntero es el valor almacenado en el propio puntero. El compilador lo tratará como una dirección en lugar de un valor normal. En los programas de 32 bits, los valores de todos los punteros de tipo son números enteros de 32 bits, porque las direcciones de memoria en los programas de 32 bits tienen una longitud de 32 bits.
El área de memoria señalada por el puntero es el área de memoria que comienza desde la dirección de memoria representada por el valor del puntero y tiene una longitud de tamaño de. De ahora en adelante, cuando decimos que el valor de un puntero es XX, equivale a decir que este puntero apunta a un área de memoria con la dirección XX como cabecera.
Cuando decimos que un puntero apunta a una determinada área de memoria, equivale a decir que el valor del puntero es la primera dirección de esta área de memoria. El área de memoria señalada por el puntero y el tipo señalado por el puntero son dos conceptos completamente diferentes. En el ejemplo 1, el tipo al que apunta el puntero ya existe, pero como el puntero no se ha inicializado, el área de memoria a la que apunta no existe o no tiene sentido.
4. El área de memoria ocupada por el puntero.
En una plataforma de 32 bits, el puntero ocupa una longitud de 4 bytes.
Enciclopedia Baidu-Puntero