2.数组
2.1 数组的概念
数组是若干个相同类型的变量在内存中的有序存储集合。
- 数组存储一组数据
- 数组里面存储的数据类型必须是相同的
- 数字在内存中会开辟一块连续的空间
// 定义了一个整型的数组a,a是数组的名字,数组中有10个元素,每个元素的类型都是int类型,而且在内存中连续存储
// 这10个元素分别为 a[0],a[1]... a[10]
int a[10];
2.2 数组的分类
2.2.1 按照元素类型分类
-
字符数组
即若干个字符变量的集合,数组中的每个元素都是字符型的变量
char s[10];
-
短整型数组
short int a[10];
-
整型数据
int a[10];
-
长整型数据
long int a[10];
-
浮点型数组
float a[10]; double a[10];
-
指针数组
char *a[10]; int *a[10];
-
结构体数组
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