2024-02-17-物联网C语言(2-数组)

2.数组

2.1 数组的概念

​ 数组是若干个相同类型的变量在内存中的有序存储集合。

  1. 数组存储一组数据
  2. 数组里面存储的数据类型必须是相同的
  3. 数字在内存中会开辟一块连续的空间
// 定义了一个整型的数组a,a是数组的名字,数组中有10个元素,每个元素的类型都是int类型,而且在内存中连续存储
// 这10个元素分别为 a[0],a[1]... a[10]
int a[10];

2.2 数组的分类

2.2.1 按照元素类型分类

  1. 字符数组

    即若干个字符变量的集合,数组中的每个元素都是字符型的变量

    char s[10];
    
  2. 短整型数组

    short int a[10];
    
  3. 整型数据

    int a[10];
    
  4. 长整型数据

    long int a[10];
    
  5. 浮点型数组

    float a[10];
    double a[10];
    
  6. 指针数组

    char *a[10];
    int *a[10];
    
  7. 结构体数组

    struct stu boy[10];
    

2.2.2 按维数分类

一维数组

int a[30];

二维数组

int a[2][30]

多维数组

int a[4][3][10];

2.3 数组的定义

2.3.1 一维数组定义

定义一个数组,在内存中分配空间

// 格式
// 数据类型 数组名[数组元素个数]

 int a[10];   // 定义了一个数组,数组元素的类型为int类型,一共10个元素 ;下标从0开始,分别为a[0],a[1]...a[9]

注意:数组元素的个数可以定义也可以不定义;不定义的时候采用初始化的方法。

#include<stdio.h>

int main(){
    int a[10];
    printf("sizeof(a) = %d \n",sizeof(a));
    int b[] = {10,20,30};
    printf("sizeof(b) = %d\n",sizeof(b));
    return 0;
}

输出结果:

sizeof(a) = 40 
sizeof(b) = 12

2.3.2 二维数组定义

// 格式: 数据类型 数组名[行的个数][列的个数]
int a[2][4]; // 定义一个名为a的二维数组,每一个元素都是int类型;这个二维数组包含2行4列的元素,一共8个元素

// 二维数据也是连续开辟空间,访问元素是行和列,从0开始
// a[0][0],a[0][1]...
#include<stdio.h>

int main(){
    
    int c[2][4];
    printf("sizeof(c) = %d\n",sizeof(c));
	
    // 二维数组行数可以省略,列数不能省略
    // 系统根据列数自动指定行数,最终数组大小为行数乘以列数
    int d[][3] = {1,2,3,4,5};
    printf("sizeof(d) = %d\n",sizeof(d));

    return 0;
}

输出结果

sizeof(c) = 32
sizeof(d) = 24

2.3.3 一维数组初始化

#include <stdio.h>

int main()
{
    
    // 局部初始化,未初始化的地方就补0
    int a[4] = {10, 20};
    printf("a[0]=%d\n", a[0]);
    printf("a[1]=%d\n", a[1]);
    printf("a[2]=%d\n", a[2]);
    printf("a[3]=%d\n", a[3]);

    return 0;
}

输出结果

a[0]=10
a[1]=20
a[2]=0 
a[3]=0 

2.3.4 二维数组初始化

#include <stdio.h>

int main()
{
    int b[2][3] = {{10, 23, 30}, {23, 235, 45}};
    printf("b[0][0]=%d\n", b[0][0]);
    printf("b[0][1]=%d\n", b[0][1]);
    printf("b[0][2]=%d\n", b[0][2]);
    printf("b[1][0]=%d\n", b[1][0]);
    printf("b[1][1]=%d\n", b[1][1]);
    printf("b[1][2]=%d\n", b[1][2]);
	// 二维数组局部初始化,未赋初始值的地方补0
    int c[2][3] = {13,23,55,66,88};
    printf("c[0][0]=%d\n", c[0][0]);
    printf("c[0][1]=%d\n", c[0][1]);
    printf("c[0][2]=%d\n", c[0][2]);
    printf("c[1][0]=%d\n", c[1][0]);
    printf("c[1][1]=%d\n", c[1][1]);
    printf("c[1][2]=%d\n", c[1][2]);
    return 0;
}

输出结果:

b[0][0]=10 
b[0][1]=23 
b[0][2]=30 
b[1][0]=23 
b[1][1]=235
b[1][2]=45 

c[0][0]=13
c[0][1]=23
c[0][2]=55
c[1][0]=66
c[1][1]=88
c[1][2]=0

2.4 数组元素的引用方法

int a[10];
// 引用方法: 数组名[下标];
a[2];
#include <stdio.h>

int main()
{
    int a[6] = {13, 131, 346, 134, 34, 34};

    // 一维数组遍历
    int i;
    for (i = 0; i < sizeof(a) / sizeof(int); i++)
    {
        printf("a[%d] = %d\n", i, a[i]);
    }
    // 二维数组的遍历
    int b[3][4] = {1, 2, 3, 4,
                   5, 6, 7, 8,
                   9, 10, 11, 12};
    // 二维数组循环
    int m, n;
    for (m = 0; m < 3; m++)
    {
        for (n = 0; n < 4; n++)
        {
            printf("b[%d][%d = %4d\n",m,n, b[m][n]);
        }
    }
}

输出结果:

a[0] = 13
a[1] = 131
a[2] = 346
a[3] = 134
a[4] = 34
a[5] = 34
b[0][0 =    1
b[0][1 =    2
b[0][2 =    3
b[0][3 =    4
b[1][0 =    5
b[1][1 =    6
b[1][2 =    7
b[1][3 =    8
b[2][0 =    9
b[2][1 =   10
b[2][2 =   11
b[2][3 =   12

2.5 字符串数组

2.5.1字符数组的定义和初始化

用字符串方式赋值比用字符逐个赋值要多占用1个字节,用来存放字符串结束标志\0

#include <stdio.h>

int main(){
    char ch[32]="";
    scanf("%s",ch);
    printf("ch = %s",ch);
    return 0;
}

输入输出结果

hello world!
ch = hello
posted @ 2024-02-17 09:44  Yasuo_Hasaki  阅读(45)  评论(0)    收藏  举报
//雪花飘落效果