Curso-lenguaje-C/fundamentos-programacion/PEC2/README.md
2024-03-17 11:26:50 +01:00

150 lines
3.1 KiB
Markdown

# PEC 2
**Índice**
- [PEC 2](#pec-2)
- [4. Estructura de memoria](#4-estructura-de-memoria)
- [4.1. Memoria](#41-memoria)
- [4.1.1. Información y espacio](#411-información-y-espacio)
- [4.2. Memoria estática](#42-memoria-estática)
- [4.3 Relación entre objetos y memoria](#43-relación-entre-objetos-y-memoria)
- [4.4. El tipo puntero en C](#44-el-tipo-puntero-en-c)
- [4.4.1. Declaración](#441-declaración)
- [4.4.2. Operaciones](#442-operaciones)
- [4.4.2.1. Asignación](#4421-asignación)
- [4.4.2.2. Contenido](#4422-contenido)
## 4. Estructura de memoria
Conceptos básicos de los efectos que produce un programa en la memoria.
### 4.1. Memoria
Un programa no se ejecuta desde el disco, sino que se carga en la memoria RAM (Random Access Memory). La memoria es un recurso finito y limitado, por lo que es importante gestionarla de forma eficiente. Por este motivo, el SO se encarga de ir moviendo los programas entre la memoria y el disco, pero desde la vista del programador debemos entender que el programa siempre está cargado en memoria.
Cada posición está identificada unívocamente con un valor numérico (su dirección) y tiene capacidad de 8 bytes.
Cuando asignamos un valor (constante o variable) se asigna un rango de direcciones donde pondrá su valor.
#### 4.1.1. Información y espacio
<table>
<tr>
<th rowspan="2">Tipo</th>
<th rowspan="2">Tipo C</th>
<th rowspan="2">Tamaño en bytes</th>
<th rowspan="2">Rango de valores</th>
</tr>
<tr>
<td colspan="2"></td>
</tr>
<tr>
<td>Entero</td>
<td>char</td>
<td>1</td>
<td>-128 to 127 o 0 to 255</td>
</tr>
<tr>
<td>Entero</td>
<td>unsigned char</td>
<td>1</td>
<td>0 a 255</td>
</tr>
<tr>
<td>Entero</td>
<td>signed char</td>
<td>1</td>
<td>-128 a 127</td>
</tr>
<tr>
<td>Entero</td>
<td>int</td>
<td>2 o 4</td>
<td>-32,768 a 32,767 o -2,147,483,648 a 2,147,483,647</td>
</tr>
<tr>
<td>Entero</td>
<td>unsigned int</td>
<td>2 o 4</td>
<td>0 a 65,535 o 0 a 4,294,967,295</td>
</tr>
<tr>
<td>Entero</td>
<td>short</td>
<td>2</td>
<td>-32,768 a 32,767</td>
</tr>
<tr>
<td>Entero</td>
<td>unsigned short</td>
<td>2</td>
<td>0 a 65,535</td>
</tr>
<tr>
<td>Entero</td>
<td>long</td>
<td>4</td>
<td>-2,147,483,648 a 2,147,483,647</td>
</tr>
<tr>
<td>Entero</td>
<td>unsigned long</td>
<td>4</td>
<td>0 a 4,294,967,295</td>
</tr>
<tr>
<td>Real</td>
<td>float</td>
<td>4</td>
<td>1.2E-38 a 3.4E+38 -> 6 decimales</td>
</tr>
<tr>
<td>Real</td>
<td>double</td>
<td>8</td>
<td>2.3E-308 a 1.7E+308 -> 15 decimales</td>
</tr>
<tr>
<td>Real</td>
<td>long double</td>
<td>10</td>
<td>3.4E-4932 a 1.1E+4932 -> 19 decimales</td>
</tr>
</table>
### 4.2. Memoria estática
### 4.3 Relación entre objetos y memoria
### 4.4. El tipo puntero en C
#### 4.4.1. Declaración
#### 4.4.2. Operaciones
##### 4.4.2.1. Asignación
##### 4.4.2.2. Contenido