C/Matrices: Diferenzas entre revisións

Contido eliminado Contido engadido
Gallaecio (conversa | contribucións)
mSen resumo de edición
m Bot: Cambios estética
 
Liña 7:
Unha matriz (''array'' en inglés) permite almacenar un grupo de datos relacionados e do mesmo [[{{BASEPAGENAME}}/Tipos fundamentais|tipo]] nunha única variable cun índice ─que permite traballar con cada un dos elementos individuais─. Para traballar cunha matriz o mellor é pensar nela como se se tratase dun grupo de variables individuais. As matrices adoitan permitirlle ao programador organizar grupos de datos de forma eficiente e intuitiva.
 
== Declaración ==
Ao declarar unha matriz, o que en realidade se está a facer é declarar un [[{{BASEPAGENAME}}/Punteiros|punteiro]] a un espazo de memoria que conterá os datos da matriz. Dito punteiro estará protexido ([[{{BASEPAGENAME}}/Modificadores#const|<source lang=c enclose=none>const</source>]]), é dicir, non se poderá modificar o enderezo de memoria que contén, sempre estará apuntado a dito enderezo.
 
A declaración da matriz supón ademais reservar en memoria estática espazo para unha certa cantidade de elementos do tipo da matriz. Ao contrario do que pasa cos [[{{BASEPAGENAME}}/Punteiros|punteiros]], no caso das matrices será o propio programa quen a xestione a memoria asignada ao punteiro da matriz (reservala, usala e liberala).
 
== Elementos ==
As matrices estás compostas por:
* '''Identificador'''. É o enderezo simbólico do comezo da matriz na memoria.
* '''Extensión'''. Expresada mediante constantes numéricas enteiras. É a cantidade de celas que hai en cada dimensión da matriz. A extensión non ten por que ser a mesma en todas as dimensións.
* '''Índice'''. Exprésase coma un enteiro ─variable, constante ou expresión de tipo enteiro─ e utilízase para facer referencia a cada unha das celas da matriz.
* '''Dimensións'''. As matrices poden ter unha ou varias dimensións, e segundo o caso o traballo con elas pode variar bastante. A cantidade de dimensións é ilimitada, e establécese sufixando o nome da variable ao declarala con corchetes, unha parella (<code>[]</code>) por cada dimensión, dentro dos cales irá a extensión da dimensión.
 
== Matrices unidimensionais ==
=== Declaración de matrices unidimensionais ===
A sintaxe fundamental para declarar matrices dunha soa dimensión é a seguinte:
<source lang=c>
Liña 37:
 
Existen certos casos en que se pode omitir a extensión da matriz unidimensional:
* se se ''inicializa'' a matriz na declaración, ou
* se se declara coma un parámetro formal nunha función.
 
O tamaño que ocupe en memoria a matriz enteira dependerá do produto do tamaño en bytes do <code>tipo</code> pola <code>extensión</code>. No exemplo anterior sería (<source lang=c enclose=none>sizeof(int)*6</source>) 24 bytes.
 
=== ''Inicializar'' matrices unidimensionais ===
Se ao declarar unha matriz se ''inicializa'' non é necesario especificar a súa extensión, pois esta dedúcese dos valores asignados á matriz. Véxase o seguinte exemplo:
<source lang=c>
Liña 55:
Neste exemplo, as tres últimas celas valerán <code>0</code>.
 
=== Cálculo da cantidade de celas ===
Para calcular a cantidade de celas dunha matriz nalgunha parte do programa, poderase deducir dun cálculo sinxelo: dividir o tamaño total da matriz polo tamaño dunha das súas celas. Sirva o seguinte exemplo ─baseado no anterior─ para ilustralo:
<source lang=c>
Liña 63:
</source>
 
=== Traballar con matrices unidimensionais ===
Para facer referencia a cada unha das celas dunha matriz, utilízase o <code>índice</code> da cela. A sintaxe para isto é:
<source lang=c>
Liña 103:
</source>
 
== Matrices de dúas dimensións ==
As celas das matrices poden repartirse en distintas dimensións para facilitar a visualización dos datos que contén ou o traballo con elas. En realidade, as celas dunha matriz en varias dimensións gárdanse en memoria do mesmo xeito que as matrices unidimensionais. De feito, pódese traballar cunha matriz de varias dimensións coma se en realidade tivese unha única dimensión.
 
Liña 117:
 
Se queremos seguir traballando con todas as dimensións dunha matriz nunha función, é necesario contarlle na chamada a esa función dúas cousas:
# A cantidade de dimensións que ten a matriz.
# A extensión da matriz en cada unha das dimensións.
 
Isto faise mediante:
Liña 145:
 
<!-- Categorías: -->
 
[[Categoría:C ─ Variables|Matrices]]