5 fuentes bibliográficas de la
definición matrices
- Una matriz es
una estructura de datos, o más técnicamente, un espacio de memoria que permite
almacenar una colección de elementos, todos del mismo tipo. [Libro de programación: Arreglos y matrices].
Las matrices son vectores de
vectores. [El lenguaje de
programación C - Vectores y matrices]
-
Es una colección de posiciones de
almacenamiento de datos, todos ellas con el mismo tipo de dato. [Vectores y matrices]
- Es una zona de almacenamiento contiguo, que contiene
una serie de elementos del mismo tipo, los elementos de la matriz. [C++
(Matrices) ]
-
Una matriz puede verse como un vector donde
cada componente es, a su vez, otro vector. [Fundamentos
de programación: Vectores y Matrices]
Elaborar un mentefacto
5 ejemplos de cómo inicializar un
array bidimensional
1) char cuadro[3][3]
= {
{ ‘B’, ‘N’, ‘N’ },
{ ‘N’, N’, ‘N’ },
{ ‘B’, ‘B’, ‘B’ }
};
2) matriz={{1,2,3,4},{5,6},{7,8,9,10,11,12},{13}};
3)///Array bidimensional en C.
#include <stdio.h>
//Primer parámetro son los elementos
//Pero como inicializamos el array de una,
//es que esta vacío.
//Segundo parámetro es la cantidad de letras
char matriz_bidimensional[][10]=
//Prueben a poner el número 8 en el segundo parámetro
{
"uno", "dos", "tres", "cuatro",
"cinco", "seis", "siete", "ocho",
"nueve", "diez", "once", "doce",
"trece", "catorce", "quince", "dieciseis"
//y... etc...
};
4) int valores[2][3] = { {10, 20, 30}, {0,1,2} };
5) int matriz[3][4] = { 1, 2, 3, 4, 4,1,2, 3, 3, 2,1,4 };
Lluvia de ideas
Explicación de punteros de arrays
Lluvia de ideas
Explicación de punteros de arrays
Un array multidimensional puede ser expresado como un array de punteros en lugar de como un puntero a un grupo contiguo de arrays. En estos casos el nuevo array será de una dimensión menor que el array multidimensional. Cada puntero indicará el principio de un array de dimensión (n-1).
En muchos aspectos, existe una equivalencia entre arrays y punteros. De hecho, cuando declaramos unarray estamos haciendo varias cosas a la vez:
- Declaramos un puntero del mismo tipo que los elementos del array.
- Reservamos memoria para todos los elementos del array. Los elementos de un array se almacenan internamente en la memoria del ordenador en posiciones consecutivas.
- Se inicializa el puntero de modo que apunte al primer elemento del array.
Las diferencias entre un array y un puntero son dos:
- Que el identificador de un array se comporta como un puntero constante, es decir, no podemos hacer que apunte a otra dirección de memoria.
- Que el compilador asocia, de forma automática, una zona de memoria para los elementos delarray, cosa que no hace para los elementos apuntados por un puntero corriente.
Ejemplo:
int vector[10]; int *puntero; puntero = vector; /* Equivale a puntero = &vector[0]; (1) esto se lee como "dirección del primer elemento de vector" */ (*puntero)++; /* Equivale a vector[0]++; (2) */ puntero++; /* puntero equivale a asignar a puntero el valor &vector[1] (3) */
¿Qué hace cada una de estas instrucciones?:
En (1) se asigna a puntero la dirección del array, o más exactamente, la dirección del primer elemento del array vector.
En (2) se incrementa el contenido de la memoria apuntada por puntero, que es vector[0].
En (3) se incrementa el puntero, esto significa que apuntará a la posición de memoria del siguiente elemento int, y no a la siguiente posición de memoria. Es decir, el puntero no se incrementará en una unidad, como tal vez sería lógico esperar, sino en la longitud de un int, ya que puntero apunta a un objeto de tipo int.
Análogamente, la operación:
puntero = puntero + 7;
No incrementará la dirección de memoria almacenada en puntero en siete posiciones, sino en 7*sizeof(int).


No hay comentarios:
Publicar un comentario