数组

1. 什么是数组

 

数组是一组相同类型元素的集合

 

2. 数组的分类

 

数组分为一维数组和二维数组

 

 

3. 一维数组

 

3.1 一维数组的创建和初始化

 

  • 创建数组的语法

 

  元素类型 数组名[常量表达式]

 

  常量表达式定义数组的元素的个数

  元素类型表示数组中每个元素的数据类型

 

注:在C99标准中,可以用变量定义数组的个数,但是不能初始化

 

  • 例子

 

#include <stdio.h>
int main()
{
    int arr1[3];            // 创建数组
    int arr2[3] = {0,1,2};  // 数组的创建和初始化
    
}

 

3.3 一维数组的使用

 

数组的使用可以分为两种,下标操作符访问和指针访问

 

  • 下标引用操作符访问

 

      下标引用操作符 [], 使用下标访问数组元素,下标从0开始递增

 

               

 

  • 例子

 

#include <stdio.h>
int main()
{
    int arr1[3];            // 创建数组
    int arr2[3] = {0,1,2};  // 数组的创建和初始化
 
    int i = 0;
    for (i = 0;i < 3; i++)
    {
        printf("%d ", arr2[i]); // 下标引用操作符访问数组
    }
    return 0;
}

 

 

  • 指针访问

 

  指针是存储内存单元地址的变量,数组名是数组首元素的地址

       

 

#include <stdio.h>
int main()
{
    int arr1[3];            // 创建数组
    int arr2[3] = {0,1,2};  // 数组的创建和初始化
 
    int i = 0;
    for (i = 0;i < 3; i++)
    {
        printf("%d ", arr2[i]); // 下标引用操作符访问数组
    }
    printf("\n");
    
    // 指针访问数组
    int* pa = arr2;
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        printf("%d ", *(pa + i);
     }
    return 0;
}

 

 

 

 

 

3.3 一维数组在内存中的存储

 

一维数组在内存中是连续存储的,每一个数组元素根据数据类型占据字节,连续排列

 

 

#include <stdio.h>
int main()
{
    int arr1[3];            // 创建数组
    int arr2[3] = {0,1,2};  // 数组的创建和初始化
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        printf("%p\n", arr[i]);
    }
    return 0;
}

 

 

int整型占据4个字节,每个元素占据4个字节,并连续排列

 

 

4. 二维数组

 

4.1 二维数组的创建和初始化

 

  • 创建

 

#include <stdio.h>
int main()
{
    // 二维数组的创建
    int arr1[3][3];
    char arr2[3][3];
    float arr3[3][3];
}

 

  •  初始化

 

#include <stdio.h>
int main()
{
    // 二维数组的初始化
    int arr1[3][3] = {1,2,3,4,5,6,7,8,9};
    int arr2[3][3] = { {1,2,3},{4,5,6},{7,8,9} };

}

 

4.2 二维数组的使用

 

二维数组和一维数组一样,可以使用下标引用操作符和指针进行访问

 

#include <stdio.h>
int main()
{
    // 二维数组的初始化
    int arr1[3][3] = { 1,2,3,4,5,6,7,8,9 };
    int arr2[3][3] = { {1,2,3},{4,5,6},{7,8,9} };

    // 下标引用操作符
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        int j = 0;
        for (j = 0; j < 3; j++)
        {
            printf("%d ", arr1[i][j]);
        }
        printf("\n");
    }

    printf("\n");
    
    // 指针访问
    int* pa = arr1;
    for (i = 0; i < 3; i++)
    {
        int j = 0;
        for (j = 0; j < 3; j++)
        {
            printf("%d ",*(pa + j));
        }
        pa += 3;
        printf("\n");
    }
}

 

 

 

 

4.3 二维数组在内存中的存储

 

二维数组和一维数组一样,在内存中是连续存储的

 

 

#include <stdio.h>
int main()
{
    // 二维数组的初始化
    int arr1[3][3] = { 1,2,3,4,5,6,7,8,9 };

    int i = 0;
    for (i = 0; i < 3; i++)
    {
        int j = 0;
        for (j = 0; j < 3; j++)
        {
            printf("arr[%d][%d] = %p", i,j,&arr1[i][j]);
            printf("\n");
        }
        printf("\n");
    }
}

 

 

  

 

posted @ 2022-12-13 11:23  许木101  阅读(125)  评论(0)    收藏  举报