#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 3
int main()
{
int numeros[3]= {};
numeros[0]=5;
numeros[1]=10;
numeros[2]=20;
printf("%d\n", numeros[0]);
printf("%d\n", numeros[1]);
printf("%d\n", numeros[2]);
printf("%d\n", numeros[3]);
return 0;
}Un arreglo es una estructura de datos que almacena una lista de valores de un mismo tipo
En el caso de C, es necesario declarar la cantidad de elementos a almacenar cuando inicializamos un arreglo
Esta cantidad de elementos es lo que conocemos como tamaño, o longitud, del arreglo
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 3
int main()
{
int numeros[3]= {};
numeros[0]=5;
numeros[1]=10;
numeros[2]=20;
printf("%lu", sizeof(numeros));
return 0;
}Para determinar el tamaño en memoria de un arreglo, utilizamos la función sizeof que regresa un valor entero largo sin signo
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 3
int main()
{
int numeros[3]= {};
numeros[0]=5;
numeros[1]=10;
numeros[2]=20;
printf("%lu", sizeof(numeros));
return 0;
}Para determinar el tamaño en memoria de un arreglo, utilizamos la función sizeof que regresa un valor entero largo sin signo
¿Cómo hacemos, entonces, para encontrar la longitud del arreglo?
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 3
int main()
{
int numeros[3]= {};
numeros[0]=5;
numeros[1]=10;
numeros[2]=20;
printf("%lu", sizeof(numeros)/sizeof(numeros[0]));
return 0;
}Para determinar el tamaño en memoria de un arreglo, utilizamos la función sizeof que regresa un valor entero largo sin signo
¿Cómo hacemos, entonces, para encontrar la longitud del arreglo?
Para encontrar la longitud de un arreglo basta con dividir su tamaño en memoria entre el tamaño en memoria de cualquiera de los elementos que lo conforman
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 3
int main()
{
int numeros[]= {5,10,15};
printf("%d\n", numeros[0]);
printf("%d\n", numeros[1]);
printf("%d\n", numeros[2]);
return 0;
}También podemos especificar los valores del arreglo desde que lo inicializamos
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 3
int main()
{
int numeros[]= {5,10,15};
printf("%d\n", numeros[0]);
printf("%d\n", numeros[1]);
printf("%d\n", numeros[2]);
return 0;
}También podemos especificar los valores del arreglo desde que lo inicializamos
Una vez creado el arreglo es posible modificar su tamaño solicitando directamente al procesador que ajuste el tamaño de memoria necesario para acomodar el nuevo tamaño del arreglo
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 10
int main()
{
int numeros[]= {2,3,5,7,11,13,18,19,23,29};
long unsigned n = sizeof(numeros)/sizeof(numeros[0]);
int i=0;
printf("El arreglo tiene %lu elementos\n\n", n);
for (i=0; i<n; i++)
{
printf("El valor del elemento en el offset %i es: %d\n", i,numeros[i]);
}
return 0;
}¿Cuál es el valor incorrecto en la secuencia numérica que se muestra en el ejemplo y cómo lo corregirías?
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 10
int main()
{
int numeros[]= {2,3,5,7,11,13,18,19,23,29};
long unsigned n = sizeof(numeros)/sizeof(numeros[0]);
int i=0;
numeros[6]=17;
printf("El arreglo tiene %lu elementos\n\n", n);
for (i=0; i<n; i++)
{
printf("El valor del elemento en el offset %i es: %d\n", i,numeros[i]);
}
return 0;
}¿Cuál es el valor incorrecto en la secuencia numérica que se muestra en el ejemplo y cómo lo corregirías?
Siempre podemos modificar el valor de cualquier elemento de un arreglo siempre que conozcamos su índice
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 10
int main()
{
int matriz[2][3]= {{1,2,3},{4,5,6}};
long unsigned m = sizeof(matriz)/sizeof(matriz[0]);
long unsigned n = sizeof(matriz[0])/sizeof(matriz[0][0]);
int i=0;
int j=0;
printf("La matriz tiene %lu filas\n\n", m);
for (i=0; i<m; i++)
{
printf("La fila %d tiene %lu columnas\n", i, n);
for (j=0; j<n; j++)
{
printf("El valor del elemento en la posiciC3n matriz[%d,%d] es: %d\n", i,j,matriz[i][j]);
}
printf("\n");
}
return 0;
}También podemos tener arreglos de más de una dimensión
La forma más simple de pensar en arreglos multidimensionales es como si fueran arreglos cuyos elementos son, a su vez, arreglos
#include <stdio.h>
#define NUMERO_DE_ELEMENTOS 10
int main()
{
int matriz[2][2][4]= {{{1,2,3,4},{5,6,7,8}},{{9,10,11,12},{13,14,15,16}}};
long unsigned m = sizeof(matriz)/sizeof(matriz[0]);
long unsigned n = sizeof(matriz[0])/sizeof(matriz[0][0]);
long unsigned o = sizeof(matriz[0][0])/sizeof(matriz[0][0][0]);
int i=0;
int j=0;
int k=0;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
for (k=0; k<o; k++)
{
printf("El valor del elemento en la posición matriz[%d,%d,%d] es: %d\n", i,j,k,matriz[i][j][k]);
}
}
}
return 0;
}También podemos tener arreglos de más de una dimensión
La forma más simple de pensar en arreglos multidimensionales es como si fueran arreglos cuyos elementos son, a su vez, arreglos
Podemos seguir extendiendo esa idea hasta llegar a n dimensiones
#include <stdio.h>
#include <string.h>
int main()
{
char cadena[] = "Hola, mundo";
int longitud = strlen(cadena);
printf("%s\n", cadena);
printf("La cadena tiene una kongitud de %d caracteres", longitud);
return 0;
}Una cadena no es otra cosa que un arreglo de caracteres de tipo char
#include <stdio.h>
#include <string.h>
int main()
{
char cadena[] = {'H','o','l','A',',',' ','m','u','n','d','o','\0'};
cadena[3]='a';
printf("%s\n", cadena);
return 0;
}Una cadena no es otra cosa que un arreglo de caracteres de tipo char
Lo anterior quiere decir que podemos operar con una cadena (casi) como lo hacíamos con los arreglos...
#include <stdio.h>
#include <string.h>
int main()
{
char cadena1[50] = "Hola, ";
char cadena2[] = "mundo";
char cadena3[50];
int igual=0;
strcat(cadena1, cadena2);
printf("%s\n\n", cadena1);
strcpy(cadena3, cadena1);
printf("%s\n\n", cadena3);
igual=strcmp(cadena1, cadena2);
printf("La comparaciC3n entre cadena1 y cadena2 es: %d\n\n",igual);
igual=strcmp(cadena1, cadena3);
printf("La comparaciC3n entre cadena1 y cadena3 es: %d\n\n",igual);
return 0;
}Una cadena no es otra cosa que un arreglo de caracteres de tipo char
Lo anterior quiere decir que podemos operar con una cadena (casi) como lo hacíamos con los arreglos...
... y que podemos usar funciones específicas para cadenas