初识一维和二维数组

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

小编的博客:就爱学编程
很高兴在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");
}

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

                                    .
相关推荐
躺不平的理查德3 分钟前
栈(stack)--c语言实现版
c语言·开发语言·数据结构·算法
梦.清..37 分钟前
C语言——指针基础
c语言·开发语言
kikyo哎哟喂1 小时前
数据结构---图
数据结构
我是哈哈hh2 小时前
专题二十四_贪心策略(2)_算法专题详细总结
数据结构·c++·算法·leetcode·贪心算法·贪心
Ws_2 小时前
leetcode LCP 开幕式焰火
开发语言·数据结构·python·算法·leetcode
tigerffff2 小时前
leetcode每日一题(20241203)
java·数据结构·算法·leetcode
怀念无所不能的你2 小时前
洛谷P4913 【深基16.例3】二叉树深度(c嘎嘎)
数据结构·c++·算法
怀念无所不能的你3 小时前
洛谷P1241 括号序列(c嘎嘎)
数据结构·c++·算法·链表·stl
qystca3 小时前
洛谷 P2895 [USACO08FEB] Meteor Shower S C语言 bfs
数据结构·算法·宽度优先
qystca3 小时前
洛谷 P1157 组合的输出 C语言
c语言·数据结构·算法