首页 > 其他分享 >2024-02-17-物联网C语言(2-数组)

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

时间:2024-02-17 09:55:28浏览次数:23  
标签:02 10 17 int 元素 C语言 数组 printf sizeof

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

标签:02,10,17,int,元素,C语言,数组,printf,sizeof
From: https://www.cnblogs.com/hasaki-yasuo/p/18017732

相关文章

  • 【集训笔记】2024 寒假集训 第一天:最优化问题
    最优化问题二分许多最优化问题可以通过二分来转化为判定性问题。0-1分数规划0-1分数规划思想用于求解分式最优化问题。可以通过对分式二分判定,转化为某一式子大于/小于常数,然后求对应最值即可。动态规划动态规划算法的一大用处就是解决最优化问题。朴素的动态规划效率一般......
  • 0217-0224校赛部分题解
    SMUWinter2024Round#3(Div.2)对于自己比较有价值的题目是D题https://codeforces.com/gym/102897/problem/D?mobile=trueJ题https://codeforces.com/gym/102897/problem/JK题https://codeforces.com/gym/102897/problem/KE题https://codeforces.com/gym/102897/prob......
  • 2024.2.16
    寄算是比较难的树形dp了吧。。。我的跟题解做法不太一样,是维护2个数组\(dp_{0/1,i}\)和\(f_{0/1,i}\)。不太好说,看题解做法吧QAQ。原神#include<bits/stdc++.h>typedeflonglongll;constllSIZE=10000+100;llN,M,a[SIZE];llC;llcnt=1,head[S......
  • 2024-02-16-物联网C语言(数据类型与语句)
    1.第一个C语言程序#include<stdio.h>intmain(){printf("helloworld");return0;}输出结果PSD:\04_Dev\05_C\01数据类型与语句\output>&.\'01_first.exe'helloworld1.1关键字c语言已经定义好的名字,直接拿过来用即可1.1.1数据类型相关的关键字作用:用......
  • 2024/2/16学习进度笔记
    SparkStreaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。另外SparkStreaming也能和MLlib(机器学习)以及G......
  • 在C语言中使用OOP
    前言这几天正在学习C++,学到了面向对象,突然想到前几天写的期末项目,自己就已经潜移默化的运用了面向对象的思想.于是就开始思考,能否在C语言中实现面向对象编程.C语言本身不支持面向对象,这给实现过程带来了很多的麻烦,但好在也能通过一些方法硬造出来.类和对象1.创......
  • 2024年2月 校内集训
    ......
  • P1706 全排列问题
    全排列问题题目描述按照字典序输出自然数\(1\)到\(n\)所有不重复的排列,即\(n\)的全排列,要求所产生的任一数字序列中不允许出现重复的数字。输入格式一个整数\(n\)。输出格式由\(1\simn\)组成的所有不重复的数字序列,每行一个序列。每个数字保留\(5\)个场宽。......
  • Solution Set【2024.2.16】
    A.寄(post)对于点对贡献问题考虑在最近公共祖先处计算答案,称给定的\(m\)个点为关键点,选择的\(k\)个点为选择点。既然我们已经要求了对于每一对关键点和选择点均在其最近公共祖先处计算答案,那么这也就意味着,存在某些节点,其子树中的关键点/选择点不会与其子树内的选择点/关......
  • 力扣递归 广度优先搜索之102. 二叉树的层序遍历
    classSolution{   List<List<Integer>>result=newArrayList<>();   publicList<List<Integer>>levelOrder(TreeNoderoot){       if(root==null){           returnresult;       }       traverse(root,0);    ......