C Arreglos
El lenguaje C admitearreglosEstructura de datos que puede almacenar una colección secuencial de elementos del mismo tipo de tamaño fijo. Los arreglos se utilizan para almacenar una serie de datos, pero a menudo se consideran una serie de variables del mismo tipo.
Declarar un arreglo no es declarar variables individuales, como ejemplo0, ejemplo1, ..., ejemplo99, sino declarar una variable de tipo arreglo, como ejemplo, y luego usar ejemplo
Todos los arreglos están compuestos por ubicaciones de memoria contiguas. La dirección más baja corresponde al primer elemento, y la dirección más alta corresponde al último elemento.

Los elementos específicos de un arreglo se pueden acceder mediante un índice; el valor del primer índice es0。
El lenguaje C también nos permite usar punteros para manejar arreglos, lo que hace que las operaciones sobre arreglos sean más flexibles y eficientes.

Declaración de arreglos
En C, para declarar un arreglo, se necesita especificar el tipo de los elementos y la cantidad de elementos, como se muestra a continuación:
type arrayName [ arraySize ];
Esto se llama un arreglo unidimensional.arraySizeDebe ser una constante entera mayor que cero,typePuede ser cualquier tipo de dato C válido. Por ejemplo, para declarar un arreglo de tipo double que contenga 10 elementosbalance, la declaración es la siguiente:
double balance[10];
Ahorabalancees un arreglo utilizable que puede contener 10 números de tipo double.
Inicialización de arreglos
En C, puede inicializar un arreglo individualmente, o también puede usar una instrucción de inicialización, como se muestra a continuación:
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
El número de valores entre llaves { } no puede ser mayor que el número de elementos que especificamos entre corchetes [ ] al declarar el arreglo.
Si usted omite el tamaño del arreglo, el tamaño del arreglo será el número de elementos durante la inicialización. Por lo tanto, si:
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
Usted creará un arreglo que es exactamente igual al arreglo creado en el ejemplo anterior. A continuación se muestra un ejemplo de asignar un valor a un elemento del arreglo:
balance[4] = 50.0;
La declaración anterior asigna el valor 50.0 al quinto elemento del arreglo. Todos los arreglos usan 0 como índice de su primer elemento, también conocido como índice base; el último índice de un arreglo es el tamaño total del arreglo menos 1. La siguiente es una representación gráfica del arreglo discutido anteriormente:

La siguiente figura es un arreglo de longitud10cuyo primer elemento tiene un índice de0, el noveno elementoejemplotiene un índice de8:
Acceso a los elementos de un arreglo
Los elementos de un arreglo se pueden acceder mediante el nombre del arreglo más un índice. El índice del elemento se coloca entre corchetes, después del nombre del arreglo. Por ejemplo:
double salary = balance[9];
La declaración anterior asignará el valor del décimo elemento del arreglo a la variable salary. El siguiente ejemplo utiliza los tres conceptos mencionados anteriormente, es decir, declarar un arreglo, asignar valores a un arreglo y acceder a un arreglo:
Ejemplo
Cuando el código anterior se compila y se ejecuta, produce el siguiente resultado:
Element[0] = 100 Element[1] = 101 Element[2] = 102 Element[3] = 103 Element[4] = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109
Obtener la longitud del arreglo
La longitud del arreglo se puede obtener usandosizeofel operador para obtener la longitud del arreglo, por ejemplo:
int numbers[] = {1, 2, 3, 4, 5};
int length = sizeof(numbers) / sizeof(numbers[0]);
Ejemplo
int main() {
int array[] = {1, 2, 3, 4, 5};
int length = sizeof(array) / sizeof(array[0]);
printf("La longitud del arreglo es: %d\n", length);
return 0;
}
Usando una definición de macro:
Ejemplo
#define LENGTH(array) (sizeof(array) / sizeof(array[0]))
int main() {
int array[] = {1, 2, 3, 4, 5};
int length = LENGTH(array);
printf("La longitud del arreglo es: %d\n", length);
return 0;
}
El resultado del ejemplo anterior es:
数组长度为: 5
Nombre del arreglo
En C, el nombre del arreglo representa la dirección del arreglo, es decir, la dirección del primer elemento del arreglo. Cuando declaramos y definimos un arreglo, ese nombre de arreglo representa la dirección del arreglo.
Por ejemplo, en el siguiente código:
int myArray[5] = {10, 20, 30, 40, 50};Aquí, myArray es el nombre del arreglo, que representa un arreglo de tipo entero que contiene 5 elementos. myArray también representa la dirección del arreglo, es decir, la dirección del primer elemento.
El nombre del arreglo en sí mismo es un puntero constante, lo que significa que su valor no se puede cambiar; una vez determinado, no puede apuntar a otro lugar.
Podemos usar el operador & para obtener la dirección del arreglo, como se muestra a continuación:
int myArray[5] = {10, 20, 30, 40, 50};
int *ptr = &myArray[0]; // 或者直接写作 int *ptr = myArray;En el ejemplo anterior, la variable puntero ptr se inicializa con la dirección de myArray, es decir, la dirección del primer elemento del arreglo.
Es importante tener en cuenta que, aunque el nombre del arreglo representa la dirección del arreglo, en la mayoría de los casos el nombre del arreglo se convierte automáticamente en un puntero al primer elemento del arreglo. Esto significa que podemos usar directamente el nombre del arreglo en operaciones de puntero, por ejemplo, al pasar parámetros a una función o al recorrer un arreglo:
Ejemplo
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]); // El nombre del arreglo arr se usa como puntero
}
}
int main() {
int myArray[5] = {10, 20, 30, 40, 50};
printArray(myArray, 5); // Pasar el nombre del arreglo a la función
return 0;
}
En el código anterior, la función printArray acepta un arreglo de enteros y el tamaño del arreglo como parámetros. Pasamos el nombre del arreglo myArray a la función, y dentro de la función se puede usar el nombre del arreglo arr como si fuera un puntero.
Explicación detallada de los arreglos en C
En C, los arreglos son muy importantes, y necesitamos conocer más detalles sobre ellos. A continuación se enumeran algunos conceptos importantes relacionados con los arreglos que los programadores de C deben tener claros:
| Concepto | Descripción |
|---|---|
| Arreglos multidimensionales | C admite arreglos multidimensionales. La forma más simple de arreglo multidimensional es el arreglo bidimensional. |
| Pasar arreglos a funciones | Puede pasar a una función un puntero al arreglo especificando el nombre del arreglo sin índice. |
| Devolver un arreglo desde una función | C permite devolver un arreglo desde una función. |
| Punteros a arreglos | Puede generar un puntero al primer elemento del arreglo especificando el nombre del arreglo sin índice. |
| Arreglos estáticos y dinámicos | Los arreglos estáticos se asignan en memoria en tiempo de compilación y su tamaño es fijo, mientras que los arreglos dinámicos se asignan manualmente en tiempo de ejecución y su tamaño es variable. |