PUNTEROS
1
PUNTEROS.
Para entender mejor los punteros es necesario revisar algunos conceptos basicos:
Variable.
La memoria de un computador está compuesta por unidades básicas llamadas
"Bytes". Cada byte posee 8 bits los cuales sólo pueden tomar dos valores, 0 ó 1.
Cada Byte tiene una identificación o dirección, llamada "Dirección de Memoria"
Unacomputadora opera manipulando direcciones de memoria y los valores
almacenados en dichas direcciones. Una variable es un identificador, que
representa una localidad de memoria. La ubicación de la variable es hecha por el
compilador.
Una declaración de variables como:
int temp, i;
float a,b,c;
Produce una asociación entre los nombres de las variables y direcciones de
memoria. Las variables ocupan unespacio en memoria que depende del tipo de
dato asociado a ella.
La cantidad de espacio ocupado por un tipo estandar especifico,
depende del tipo de computador y del sistema operativo. La tabla
siguiente muestra a la derecha tiene el tamaño en bytes que
ocupan los tipos estandar en un micro actual, con windows de 32
bits.
Las variables tienen entonces 2 valores asociados a ella. Un
valor es ladirección de memoria que le fue asignada por el
compilador y que no puede ser cambiada mientras el
programa se está ejecutando y otro valor que es el
contenido de la variable misma, el cual si puede ser
cambiado por las instrucciones del programa.
Arreglo.
Un arreglo es un conjunto ordenado de elementos del mismo tipo,
este tipo puede ser de los que proporciona el lenguaje (char, int,
float, double, etc).El tipo determina cuantos bytes ocupa cada
elemento y junto con el tamaño determina el espacio que va a
ocupar toda la estructura.
Ejemplo:
int vector[5]={3,345,4,54,5};
char nombre[10]="MARIA";
struct t_nota
{
char cod;
int
min, max;
};
t_nota Tabla[6]={{‘A’,18,20},{‘B’,15,17},
{‘C’,10,14},{‘D’,8,9}, {‘E’,5,7},{‘F’,0,4}};
En las declaraciones anteriores:
int Vector[5] = {3,345,4,54,5};
Elespacio que ocupa Vector puede ser calculado multiplicando el numero de elementos que posee por el espacio
que ocupa cada elemento. Vector ocupa 20 Bytes: 5 Elementos * 4 Bytes/Elemento.
char nombre[10]=”MARIA”;
2
Punteros y Arreglos/Registros – Memoria Dinamica
Se almacena un carácter por byte, agregando un “fin de cadena” (\0) despues del ultimo carácter. El fin de cadena
facilita lamanipulacion del arreglo ya que determina hasta donde hay información valida.
Tabla es un arreglo de 6 registros, cada uno de los cuales tiene 3 campos. Cada registro ocupa 9 Bytes(cod 1 byte
+ min 4 byte + max 4 byte) por lo tanto la estructura ocupa 54 bytes.
La instrucción en C (sizeof()) permite obtener el tamaño en bytes de un tipo especifico, una variable, un arreglo o una
estructura tipo registro.Ejemplo:
void main()
{
int A, M[10];
float B,N[5][5];
struct T
{
char cod;
Int inf,sup;
}
T tabla[10] ;
cout<
Se puede calcular el tamaño del arreglo M = sizeof(M)/sizeof(M[0])
PUNTERO (Definición, Usos y Ventajas)
Un puntero es una variable que contiene la dirección de otra variable, dicho de otra manera los punteros son variables
que almacenan unicamente direcciones de memoria.
Para declarar un puntero se usa el formato:
tipo *nombre donde:
tipo
indica el tipo de variables que se van a manejara través del puntero y corresponde a los tipos de variable
definidos en C o algún tipo definido por el usuario (struct). El tipo permite conocer la cantidad de bytes a ser
leidos al usar el puntero.
(*)
indica que la variable que se encuentra a continuacion es un puntero
nombre
es el nombre del puntero. Cualquier Identificador valido en c.
Por Ejemplo:
int *pent;
char *ptexto, T;
float...
Regístrate para leer el documento completo.