Directorio
matriz: un conjunto del mismo conjunto del mismo elemento
matriz de una dimensión
Declaración:
Nombre del número de tipo de datos Nombre [Expresión constante];
Expresión constante: debe ser una constante entera mayor que cero.
Por ejemplo
int main ()
{{
Char ARR1 [10]; // El tipo de char contiene 10 elementos ARR1
int arr2 [1 + 9]; // El tipo de una matriz de 10 elementos ARR2
Long ARR3 [1 * 10]; // El tipo de tipo de 10 elementos ARR3 contiene 10 elementos
Flotante arr4 [100 /10]; // El tipo de flotante contiene 10 elementos matriz ARR4
ARR5 doble [110 % 100]; // El tipo de doble matriz de elementos ARR5
Regresar 0;
}
Nota: Cree una serie de matrices. Antes del estándar C99, debe dar una constante en [] y no puede usar variables. En el estándar C99, se admite el concepto del cambio del cambio.
Inicialización:
La inicialización de la matriz de
se refiere a algunos valores iniciales razonables (inicialización) de la matriz al mismo tiempo que la matriz.
Inicialización completa:
Cuando el número se inicializa completamente, se puede omitir la expresión constante en la matriz. Determinará automáticamente el tamaño de la matriz de acuerdo con el número de elementos dados
int main ()
{{
int arr [] = {1,2,3,4,5,6,7,8,9,10};
int sz = sizeof (arr) /sizeof (arr [0]); // Calcule el número de elementos
Printf ("%d", sz);
Regresar 0;
}
Inicialización incorrecta
Cuando se inicializan la matriz, se inicializan algunos elementos y los elementos restantes se complementarán automáticamente a 0
int main ()
{{
int arr [10] = {1,2,3,4,5}; // Aplicar 10 espacios enteros, solo inicialización de los primeros cinco elementos.
int i = 0;
para (i = 0; i <10; i ++)
Printf ("%d", arr [i]);
Regresar 0;
}
matriz global:
La inicialización de la matriz global
es algo similar a la variable global. Cuando se declara la matriz global pero no se inicializa, será automáticamente inicialmente cero.
int arr [10]; // Crear una matriz global
int main ()
{{
int i = 0;
para (i = 0; i <10; i ++)
Printf ("%d", arr [i]); // Todos los elementos de la matriz de impresión
Regresar 0;
}
matriz de personajes
Además de almacenar caracteres en el tipo
char, también puede almacenar cadena
El almacenamiento del personaje es más o menos similar al personaje, pero todavía hay algunas diferencias
int main ()
{{
char arr [] = {'h', 'e', 'l', 'l', 'o', '', 'w', 'o', 'r', 'l', 'd' };
char ch [] = "hola mundo";
int sz_arr = sizeof (arr)/sizeof (arr [0]); // Calcule el número de elementos de la matriz ARR
int sz_ch = sizeof (ch) /sizeof (arr [0]); // Calcule el número de elementos de la matriz CH
Printf ("El tamaño de la matriz de arr es => %d \ n", sz_arr);
Printf ("El tamaño de la matriz CH es => %d \ n", sz_ch);
Regresar 0;
}
Las matrices de personajes se almacenan mundialmente, ¿por qué es una diferencia en el elemento?
Abra la vigilancia y revise, lo encontrará
En comparación con ARR, uno más \ 0 se almacena en el cap.
Al final de la cadena, la computadora agregará automáticamente un \ 0.
use:
A través del operador de licitación [] y los elementos, la licitación se puede utilizar para lograr la función de la función en la matriz
(solo puede hacer referencia a los elementos de la matriz uno por uno, y no se puede hacer referencia a toda la matriz a la vez).
dispensación: cada elemento en la matriz tiene su propio acuerdo, y la oferta aumenta de 0
por ejemplo
int main ()
{{
char arr [] = "abcdefgh";
Printf ("%c \ n", arr [0]); // imprima el elemento con 0 ofertas 0
printf ("%c \ n", arr [1]); // Imprima el elemento con una oferta para 1
printf ("%c \ n", arr [2]); // imprima el elemento con 2 ofertas 2
printf ("%c \ n", arr [3]); // imprima el elemento con 3 ofertas 3
printf ("%c \ n", arr [4]); // imprima el elemento con 4 ofertas 4
printf ("%c \ n", arr [5]); // imprima el elemento con 5 ofertas 5
printf ("%c \ n", arr [6]); // imprima el elemento con 6 ofertas 6
printf ("%c \ n", arr [7]); // imprima el elemento con 7 ofertas 7
Regresar 0;
}
Resumen:
La matriz
- es accesible para usar la licitación, y la licitación comienza desde 0.
Se puede calcular el tamaño de la matriz
- .
int arr[10];
int sz = sizeof(arr)/sizeof(arr[0]);
Almacenamiento en la memoria
La matriz se almacena continuamente en la memoria
se puede observar mediante la dirección de cada elemento en la matriz
int main()
{
int arr[10] = { 0 };
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; ++i)
printf("&arr[%d] = %p\n", i, &arr[i]);
return 0;
}
Se pueden encontrar la diferencia de cuatro bytes entre la dirección de cada elemento. Esta matriz es una matriz entera, que se puede aprender claramente.
La matriz se almacena continuamente en la memoria
NOTA: El nombre de la matriz es la dirección del primer elemento
arr [i] también se puede entender como (arr+i)*
matriz de dos dimensiones
Declaración
La declaración de matriz de dos dimensiones es algo similar a una matriz de una dimensión
Tipo de datos Nombre Nombre Nombre [Expresión constante] [Renderización constante];
Por ejemplo
int arr1 [3] [4]; el tipo de tipo contiene 12 (3*4) matriz ARR1
Char ARR2 [3] [5]; el tipo de tipo contiene la matriz de 15 (3*5) elementos ARR2
ARR3 doble [2] [4]; el tipo de tipo que contiene 8 (2*4) Elementos ARR3
Inicialización
Tipo de datos Nombre Nombre Nombre [Expresión constante 1] [Constante alcanza 2];
La expresión puede entenderse comonúmero
Exp Me puede entenderse comocolumnanúmero
Por ejemplo
int arr[3][4] = {1,2,3,4};
se puede entender como un espacio para una línea de tres y cuatro, que son como datos de depósito, y la siguiente línea se almacena después de la completa.
NOTA: Para la inicialización incompleta, el espacio que no se inicializa es cero.
En la premisa de este ejemplo, algunos ejemplos pueden entender mucho
En la matriz de dos# dos dimensiones, se puede omitir el número de filas. Determinará automáticamente el tamaño de la fila de acuerdo con el número de filas que inicializan
int arr[3][4] = {
{1,2},{4,5}};
int arr[][4] = {
{2,3},{4,5}};
Uso
El uso de
matriz de dos dimensiones también depende de la licitación
Explicación con una función
int main()
{
int row = 0;
int col = 0;
int arr[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12}};
for (row = 0; row < 3; row++)
{
for (col = 0; col < 4; col++)
{
printf("arr[%d][%d]=%2d ", row, col, arr[row][col]);
}
printf("\n");
}
return 0;
}
puede pasarlicitación de líneayConfiguración de columnapara bloquear el elemento para lograr el efecto del uso
Almacenamiento en la memoria
La matriz de dos dimensiones también se almacena continuamente en la memoria
Aunque
#include <stdio.h>
int main()
{
int arr[3][4];
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);
}
}
return 0;
}
, al comprender la matriz de dos dimensiones, a menudo comprende la matriz de dos dimensiones como un avión, y el comienzo se almacena continuamente en la memoria
como se muestra en la figura a continuación
matriz
Al llamar a la función de la oferta inferior, debe prestar atención al alcance de la oferta para evitar la situación de cruzar la frontera.
Tome una matriz de dimensión como ejemplo
La matriz
tiene elementos n, por lo que el alcance de la licitación es 0 ~ n-1. Cuando la corriente es inferior a 0 o mayor que N-1, pertenece a la visita transfronteriza, que está más allá de la entrevista con La variedad de espacio legal.
matrices de dos dimensiones iguales