Sie sind auf Seite 1von 4

Matrices

Una matriz es una estructura de datos interna que almacena un conjunto de datos del
mismo tipo bajo un nombre de variable común. La posición de un elemento dentro de la
matriz viene identificada por uno o varios índices, de tal modo que a cada elemento se
accede mediante el nombre de la matriz y sus índices.

La dimensión de una matriz es el número de índices necesario para identificar un


elemento.

Matrices unidimensionales

Son aquellas que sólo precisan de un índice para acceder a cada elemento. También se
les llama vectores o listas.

Todos los elementos de un vector se almacenan en posiciones de memoria contiguas,


almacenándose el primer elemento en la dirección más baja.

Un vector se declara de la siguiente forma:

tipo nombre[num_elem];

donde tipo es el tipo de dato de todos los elementos del vector, nombre es cualquier
identificador válido C, y num_elem es el número de elementos del vector. Por ejemplo,

char frase[20];

int numero[16];

float valor[12];

declaran, por este orden, un vector de 20 caracteres, otro de 16 elementos enteros y otro
de 12 elementos en coma flotante.

se almacenan al igual que los vectores en posiciones consecutivas de memoriaLa forma


de acceder a los elementos de la matriz es utilizando su nombre e indicando los 2
subíndices que van en los corchetes.

Si coloco int matriz[2][3] = 10; estoy asignando al cuarto elemento de la tercera fila el
valor 10.

No olvidar que tanto filas como columnas se enumeran a partir de 0. Bueno y para
recorrer una matriz podemos usar igualmente un bucle. En este caso usando 2 for:

for(int i = 0; i < rows; i++)


{
for(int j = 0; j < cols; j++)
{
matrix[i][j] = i % j;
}
}

MATRICES DINÁMICAS

Para crear una matriz dinámica debemos de crear un doble puntero int **pm y al igual
que los vectores el operador new para reservar memoria y delete para liberar. Primero
tenemos que crear el vector que contendrá a otros vectores especificando el numero de
vectores que tendrá este vector principal. Ejem:

pm = new int* [rows]; // creo el vector de punteros principal


for(int i = 0; i < rows; i++) {
pm[i] = new int[cols]; // para crear los vectores dentro del vector principal
}

Ahora sí veamos un simple programa que crea una matriz dinámica, asigna valores,
muestra el contenido de cada uno de los elementos los elementos así como sus
direcciones de memoria.

PUNTEROS

¿Qué son los punteros?

Un puntero es una dirección. Al contrario que una variable normal, un puntero es una
variable almacenada en alguna parte del espacio del programa. Por ejemplo, la dirección
de otra variable.

Direcciones de memoria

1386 1387 1388 1389 1390 1391 1392 1393 1394 1395
1393 dato

El puntero almacenado en la posición

de memoria 1388 apunta al dato almacenado

en la posición de memoria 1393

Las variables puntero se declaran de la siguiente forma:


Tipo *nombre;

siendo nombre el identificador de la variable puntero, y tipo el tipo de variable a la que


apunta. Por ejemplo,

char *m;

int *n;

float *p;

DOS IMPORTANTES REGLAS

Las siguientes reglas son muy importantes a la hora de usar punteros, y deben ser
perfectamente aprendidas.

1. Un nombre de variable, precedido por un signo de amperson define la dirección de la


variable, y ocasionalmente “la apunta”. Puede leerse la línea 6 del programa como “pt1
es asignado al valor de la dirección de index”.

2. Un puntero con una estrella precediéndole se refiere al valor de la variable apuntada


por el puntero. La línea 9 del programa puede leerse como: “al puntero pt1 le es
asignado el valor 13″.

Los punteros y el ampersand

El ampersand es un operador de C++ y es comúnmente utilizado para los punteros. Este


operador nos permite obtener la dirección de memoria de una variable cualquiera y es
justo esto (la dirección en memoria) lo que utilizan los punteros para referenciar valores.

Los apuntadores y el asterisco

El asterisco es, por decirlo de alguna forma, el operador por excelencia de los punteros.
SU utilidad radica en que si el valor de dicho apuntador corresponde a una dirección de
memoria, el asterisco nos permite resolverla y acceder al valor almacenado allí.
Viéndolo desde otro enfoque, un apuntador es únicamente una dirección de memoria
(un número) y el asterisco es el que hace la magia de obtener el valor referenciado por
dicha dirección.

Bibliografía

https://webcache.googleusercontent.com/search?q=cache:Y517FTh257QJ:https://www.
programacion.com.py/escritorio/c/punteros-en-c+&cd=15&hl=es&ct=clnk&gl=ec
https://webcache.googleusercontent.com/search?q=cache:sDxCmmHKCwkJ:https://htm
l.rincondelvago.com/introduccion-al-lenguaje-c_matrices-y-
punteros.html+&cd=15&hl=es&ct=clnk&gl=ec

https://webcache.googleusercontent.com/search?q=cache:dhgZaeeKMkYJ:https://www.
zator.com/Cpp/E4_3_5.htm+&cd=9&hl=es&ct=clnk&gl=ec

https://webcache.googleusercontent.com/search?q=cache:tw8ymdm83koJ:https://docs.o
racle.com/cd/E19253-01/819-6957/chp-
pointers/index.html+&cd=11&hl=es&ct=clnk&gl=ec

https://webcache.googleusercontent.com/search?q=cache:ZaOrzwJ5D30J:https://ronny
ml.wordpress.com/2009/07/04/vectores-matrices-y-punteros-en-
c/+&cd=10&hl=es&ct=clnk&gl=ec

Das könnte Ihnen auch gefallen