初识一维和二维数组

大家好,这里是小编的博客频道

小编的博客:就爱学编程
很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!!

本文目录

引言

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


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

正文

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

一 初识一维数组

(1)一维数组的创建:

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

例:

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

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

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

元素类型为整型就初始化为整数0;

元素类型为字符型就初始化为字符'0';

元素类型为浮点型就初始化为浮点数0.0;

元素类型为布尔型就初始化为0对应的false(假);

(3)一维数组类型:

格式为:元素类型 元素个数

例:

c 复制代码
int[10];

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

二 一维数组的使用

(1)数组的下标:

数组的下标是从0开始的

例:

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

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

例:

c 复制代码
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中引入了变长数组的概念,就是元素个数可以用变量表示的数组

例:

c 复制代码
int arr[n];
scanf("%d",&n);

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

例:

c 复制代码
#define  PI   10
int  arr[PI]={0};

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

(1)sizeof运算符

求字节长度的运算符整形占4个字节,字符型占1个字节,双精度型占8个字节,单精度型占4个字节。

格式:

sizeof(数据类型);

(2)strlen函数

专门求字符串长度的函数,也可以是单个字符。

格式:

strilen(字符串);

易错题:

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

c 复制代码
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)二维数组的创建:

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

例:

c 复制代码
int arr[2][3];

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

例:

c 复制代码
int arr[][3];

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

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

例:

c 复制代码
int arr[2][3]={1,2,3,4,5,6};

初始化结果为

c 复制代码
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.指定初始化:

例:

c 复制代码
int arr[2][3]={{1,2},{3,4}};

初始化结果为:

c 复制代码
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循环就可完成,同样括号中的变量也从零开始

例:

c 复制代码
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");
}

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

复制代码
                                    .
相关推荐
kkeeper~9 小时前
0基础C语言积跬步之数据在内存中的存储
c语言·数据结构·算法
2401_8685347810 小时前
论企业网络设计
数据结构
2401_8769641311 小时前
【湖北专升本】2026湖北专升本真题PDF+备考资料汇总
数据结构·人工智能·经验分享·深度学习·算法·计算机视觉
qq38624619611 小时前
更新补发第6天:7天学会C语言,每天5分钟,不需要基础
c语言·for循环·循环语句·while循环·do-while循环
c2385614 小时前
vector(下)
数据结构·算法
z落落14 小时前
C# 冒泡排序+选择排序 + Array.Sort 自定义排序
数据结构·算法
无限进步_15 小时前
【C++】weak_ptr、循环引用与线程安全
开发语言·数据结构·c++·算法·安全
guslegend15 小时前
第4讲:应用架构与代码组织
数据结构·人工智能·架构
Lewiis15 小时前
白话选择排序
数据结构·算法·排序算法
如竟没有火炬16 小时前
乘法表中第K小的数——二分
开发语言·数据结构·python·算法·leetcode·职场和发展·动态规划