大家好,这里是小编的博客频道
小编的博客:就爱学编程
很高兴在
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]={{1,2},{3,4}};
初始化结果为:
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");
}
快乐的时光总是短暂,咱们下篇博文再见啦!!!不要忘了,给小编点点赞和收藏支持一下,在此非常感谢!!!
.