contenido
- 1. Creación e inicialización de arreglos unidimensionales
- 2. El uso de arreglos unidimensionales
- 3. Almacenamiento de arreglos unidimensionales en memoria
- 4. Creación e inicialización de arreglos bidimensionales
- 5. El uso de arreglos bidimensionales
- 6. Almacenamiento de arreglos bidimensionales en memoria
- 7. Matriz fuera de los límites
- 8. Arreglos como parámetros de función
- 9. Enséñale el grupo a mano
1. Creación e inicialización de arreglos unidimensionales
crear: Tome una matriz de enteros como ejemplo
int arr[5] = {
1,2,3,4,5 };
La forma es así, arr
para el nombre de la matriz creada
[5]
, la matriz interna es el número de elementos de la matriz,
int
lo que indica que el tipo de los elementos de la matriz es un tipo entero
inicialización:
int arr[5] = {
1,2,3,4,5 };
这种是把数组里面的元素全部初始化,并且指定了数组元素的个数
int arr1[] = {
1,2,3,4,5 };
这种没有指定数组的个数,数组的元素的个数根据后面大括号里面的个数确定
int arr2[5] = {
1,2 };
这种指定了数组元素的大小却没有完全初始,
前面两个元素分别被初始化为1,2后面3个元素都被默认初始化为0
matriz de caracteres
char arr[]="maoleshua";
这是10个元素,因为字符串以\0为结尾
char arr[]={
'm','l','n','b'};
这是4个元素
pensar
int n=5;
int arr[n]={
1,2,3,4,5};
¿Es correcto el código anterior? Antes del estándar C99, era incorrecto escribir de esta manera ( [] solo puede contener constantes enteras ), pero después de eso, existe el concepto de matrices de longitud variable, que es correcto.
Pero el compilador vs no es compatible con el estándar C99 por el momento. Así que está mal.
2. El uso de arreglos unidimensionales
fácil de usar
int main()
{
int arr[5] = {
1,2 };
int i = 0;
for (i = 0; i < 5; i++)
{
arr[i] = i;
}
for (i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
3. Almacenamiento de arreglos unidimensionales en memoria
La matriz se almacena de forma contigua en la memoria.Para
el código anterior,
mire su dirección de memoria
4. Creación e inicialización de arreglos bidimensionales
La matriz bidimensional se ve así int arr[][]
, el primer [ ] representa la fila y el segundo [ ] representa la columna.
inicialización:
int arr1[2][2] = {
1,2,3 ,4};
全部初始化
int arr2[2][2] = {
{
1,2},{
3 ,4} };
和上面的一样,每个大括号表示一行
int arr3[2][2] = {
{
1},{
2,3 } };
这种第一行没有完全初始化,没有完全初始化的被默认初始化为0
int arr4[][2] = {
1,2,3 ,4};
这种省略行的表示是正确的,行数由后面的初始化的确定
int arr5[2][] = {
1,2,3,4 };
这种初始化是错误的,不能省略列
int arr6[2][2] = {
1 };
非完全初始化,其余元素都为0
5. El uso de arreglos bidimensionales
Es así de simple de usar
int arr[2][2] = {
1,2,3 ,4};
int i, j;
for(i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
6. Almacenamiento de arreglos bidimensionales en memoria
Las matrices bidimensionales también se almacenan de forma contigua en la memoria.
7. Matriz fuera de los límites
Matriz fuera de los límites significa acceder a la memoria fuera de la matriz.Tome
una matriz unidimensional como ejemplo
int arr[5] = {
1,2 };
int i = 0;
for (i = 0; i < 6; i++)这里当i==5,访问数组中第6个元素,为越界访问
{
arr[i] = i;
}
8. Arreglos como parámetros de función
El nombre de la matriz de una matriz unidimensional representa la dirección del primer elemento El nombre de la matriz de una matriz bidimensional representa defila
primerala dirección del elemento de la
void f(int* arr)
{
int st = sizeof(arr) / sizeof(arr[0]);
大家可能以为st的值为5,但是为1,
因为这个arr是指针变量,32位平台上占4个字节
}
int main()
{
int arr[5] = {
1,2,3 ,4 };
f(arr);
return 0;
}
Los lectores deben prestar atención.
9. Enséñale el grupo a mano
QQ grupo 720429262