当前位置: 首页 > news >正文

初识一维和二维数组

大家好,这里是小编的博客频道
小编的博客:就爱学编程

很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!!

本文目录

  • 引言
  • 正文
    • 数组的基本类型:一维数组和多维数组
    • 一 初识一维数组
      • (1)一维数组的创建:
      • (2)一维数组的初始化:
        • 1.部分初始化:
        • 2.全部初始化:
          • 这样我们就对这四个数组中的第一个元素和全部元素进行了初始化,值得注意的是:如果我们没有对数组中的元素进行初始化或只初始化了部分的元素,编译器会自动帮我们初始化其他没被初始化的元素,初始化规则是:
      • (3)一维数组类型:
    • 二 一维数组的使用
      • (1)数组的下标:
    • 三 数组在内存中的存储:
    • 四 变长数组:
    • 五 sizeof运算符和strilen函数计算数组长度的区别(易错点)
      • (1)sizeof运算符
      • (2)strlen函数
    • 六 初识二维数组
      • (1)二维数组的创建:
      • (2)二维数组的初始化:
    • 七 二维数组在内存中的储存:
    • 八 二维数组的使用:
  • 快乐的时光总是短暂,咱们下篇博文再见啦!!!不要忘了,给小编点点赞和收藏支持一下,在此非常感谢!!!

引言

在C语言中,数组是一种非常重要的数据结构,它允许我们存储固定大小的同类型元素集合。通过使用数组,我们可以方便地处理大量数据,提高程序的效率和可读性。数组的类型分为一位数组和二维数组,还有多维数组,而今天小编将要给大家介绍的是数组的相关知识。一起来看看吧!!!

在这里插入图片描述


那接下来就让我们开始遨游在知识的海洋!

正文

数组的基本类型:一维数组和多维数组

一 初识一维数组

(1)一维数组的创建:

格式为:元素类型 数组名[元素个数]
例:

         int  arr[10];char   arr[10];float  arr[10];bool   arr[10];
这样我们就创建了四个元素个数均为10个的整形数组,字符数组,浮点型数组,布尔型数组。

(2)一维数组的初始化:

1.部分初始化:
       int arr[10]={0};char arr[10]={'0'};float arr[10]={0.0};bool arr[10]={false};
2.全部初始化:
    int arr[10]={1,2,3,4,5,6,7,8,9,10};
这样我们就对这四个数组中的第一个元素和全部元素进行了初始化,值得注意的是:如果我们没有对数组中的元素进行初始化或只初始化了部分的元素,编译器会自动帮我们初始化其他没被初始化的元素,初始化规则是:

元素类型为整型就初始化为整数0;
元素类型为字符型就初始化为字符’0’;
元素类型为浮点型就初始化为浮点数0.0;
元素类型为布尔型就初始化为0对应的false(假);

(3)一维数组类型:

格式为:元素类型 [元素个数]
例:

int[10];

数组去掉数组名剩下来的就是数组的类型这也适用于多维数组
由此可见类型一样,数组未必是同一个数组

二 一维数组的使用

(1)数组的下标:

数组的下标是从0开始的

例:

int[10]={1,2,3,4,5,6,7,8,9,10};0,1,2,3,4,5,6,7,8,9arr[0]==1,arr[9]==10;

所以我们要输入一维数组各元素的值,如果采用for循环的方式,就得将括号里定义的变量初始化为0;或者我们想将一维数组中各元素的值全部打印出来,如果采用for循环的方式,同前。
例:

printf("请输入: \n");
for(int i=0;i<10;i++)
{scanf("%d",&arr[i]);
}
printf("\n");
for(int i=0;i<10;i++)
{printf("%d ",arr[i]);
}
printf("\n");

运行结果为:

在这里插入图片描述

三 数组在内存中的存储:

元素在内存中的存储是连续的,也就是紧挨着的,这里不做过多讨论。

四 变长数组:

在c99中引入了变长数组的概念,就是元素个数可以用变量表示的数组

例:

int arr[n];
scanf("%d",&n);

变长数组的好处就是数组的长度可以由自己输入确定,但也要注意变长数组不可以初始化
如果想要初始化一个长度可以由自己改变的数组,则就要使用符号常量

例:

#define  PI   10
int  arr[PI]={0};

五 sizeof运算符和strilen函数计算数组长度的区别(易错点)

(1)sizeof运算符

求字节长度的运算符整形占4个字节,字符型占1个字节,双精度型占8个字节,单精度型占4个字节。
格式:
sizeof(数据类型);

(2)strlen函数

专门求字符串长度的函数,也可以是单个字符。
格式:
strilen(字符串);

易错题:
题目:下列代码执行的结果是什么?

char arr1[]={"hello,bite!"), arr2={'h','e','l','l','o',',','b','i','t','e','!'};
printf("%d %d",sizeof(arr1),sizeof(arr2));
printf("%d %d",strlen(arr1),strlen(arr2));

运行的结果是:
在这里插入图片描述
注意:22是随机值,是取决于编译器;
原因是:字符串后隐藏了一个’\0’字符,表示字符的结束。(‘\0’的ASCLL值为0)strlen求的是字符串长度,从首元素开始计算,遇见‘\0’停止(但不包括\0),由于arr2组没有’\0‘,所以strlen(arr2的结果是个随机值。

六 初识二维数组

(1)二维数组的创建:

格式:元素类型 数组名[行数][列数]
例:

int arr[2][3];

注意:二维数组的行数可以省略,但列数不可省略。
例:

int arr[][3];

(2)二维数组的初始化:

1.顺序初始化:与一维数组同理
例:

int arr[2][3]={1,2,3,4,5,6};

初始化结果为

arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
arr[1][0]=4;
arr[1][1]=5;
arr[1][2]=6;

2.指定初始化:
例:

int arr[2][3]={{12}{34}}

初始化结果为:

arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=0;
arr[1][0]=3;
arr[1][1]=4;
arr[1][2]=0;

七 二维数组在内存中的储存:

和一维数组一样,二维数组在内存中的储存也是连续的,也就是紧挨着的,且是一行一行挨着的,前一行的末尾挨着后一行的开头。

  • 总的来说,C语言的二维数组在内存中是以连续的方式存储的,这使得它们非常适合于需要快速访问和修改大量数据的场景。

八 二维数组的使用:

二维数组的下标也是从零开始,其输入和输出均用两个for循环就可完成,同样括号中的变量也从零开始

例:

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

快乐的时光总是短暂,咱们下篇博文再见啦!!!不要忘了,给小编点点赞和收藏支持一下,在此非常感谢!!!

                                    .

http://www.mrgr.cn/news/78869.html

相关文章:

  • vue3typescript,shims-vue.d.ts中declare module的vue声明
  • 速盾:高防 CDN 可以配置客户端请求超时配置?
  • SpringCloud2~~~
  • 数据集-目标检测系列- 海边漫步锻炼人检测数据集 person >> DataBall
  • 基于 Python、OpenCV 和 PyQt5 的人脸识别上课打卡系统
  • Vue进阶之单组件开发与组件通信
  • 编译器优化技术
  • AI-学习路线图-PyTorch
  • NuHertz/HFSS: 使用矩形、径向和阻抗短截线的平面 LPF 切比雪夫-II 实现
  • 公专业务能力
  • 【C语言】结构体(二)
  • Hot100 - 二叉树的中序遍历
  • 利用市场分析工具对特定国家的产品市场情况进行深入分析的全面指南
  • 无需U盘引导!快速在实体机上安装黑群晖 DSM 7.2(一步到位!黑群晖 DSM 7.2 内置硬盘引导安装教程)
  • Kafka-Connect自带示例
  • Maven学习
  • 力扣题解14——最长公共前缀
  • ThinkPHP Nginx 重写配置
  • 【老白学 Java】抽象类和抽象方法
  • 【UE5 C++】判断两点连线是否穿过球体
  • 基于 LlamaFactory 的 LoRA 微调模型支持 vllm 批量推理的实现
  • 【NLP 4、数学基础】
  • 【软考速通笔记】系统架构设计师⑤——软件工程基础知识
  • Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录
  • HarmonyOS
  • winform跨线程更新界面