网站工商标识做网站的公司负责,杭州做网站一般多少钱,网站开发毕业设计收获与体会,怎么建设自己的卡盟网站1 数组概述
数组是若干个相同类型的变量在内存中有序存储的集合。 数组是 C 语言中的一种数据结构#xff0c;用于存储一组具有相同数据类型的数据。 数组在内存中会开辟一块连续的空间 数组中的每个元素可以通过一个索引#xff08;下标#xff09;来访问#xff0c;索…1 数组概述
数组是若干个相同类型的变量在内存中有序存储的集合。 数组是 C 语言中的一种数据结构用于存储一组具有相同数据类型的数据。 数组在内存中会开辟一块连续的空间 数组中的每个元素可以通过一个索引下标来访问索引从 0 开始最大值为数组长度减 1。 2 数组分类
2.1 元素的类型分类 字符数组即若干个char变量的集合数组中的每个元素都是字符型的变量。例如char s[10]; s[0],s[1]....s[9]; 短整型的数组即若干个short类型变量的集合数组中的每个元素都是字符型的变量。例如short int a[10]; a[0] ,a[9]; a[0]4;a[9]8; 整型的数组即若干个int类型变量的集合数组中的每个元素都是int型的变量。例如int a[10]; a[0] a[9]; a[0]3;a[9]6; 长整型的数组即若干个long类型变量的集合数组中的每个元素都是long型的变量。例如long a[10]; a[0] a[9]; a[0]3;a[9]6; 浮点型的数组即若干个float类型变量的集合数组中的每个元素都是float型的变量。例如float a[10]; a[0] a[9]; a[0]3.14;a[9]6.8; 指针数组例如int *a[10]; 结构体数组例如struct stu boy[10]。
2.2 维数分类 一维数组例如int a[30]类似于一排平房 二维数组例如int a[2] [2]可以看成一栋楼房 有多层每层有多个房间也类似于数学中的矩阵二维数组可以看成由多个一维数组构成的。 多维数组例如int a[4] [2] [10]三维数组是由多个相同的二维数组构成的。
3 数组的定义
3.1 一维数组
一维数组的语法格式
类型 数组名[元素个数];
// 例如int arr[5];
注意 数组名不能与其它变量名相同同一作用域内是唯一的 下标从0开始计算因此5个元素分别为arr[0]arr[1]arr[2]arr[3]arr[4]
#include stdio.hint main()
{// 定义了一个数组名字叫a有10个成员每个成员都是int类型int a[10]; // a[0]…… a[9]没有a[10]// 没有a这个变量a是数组的名字但不是变量名它是常量a[0] 0;// ……a[9] 9;// 数据越界超出范围错误// a[10] 10; // errfor (int i 0; i 10; i){a[i] i; // 给数组赋值}// 遍历数组并输出每个成员的值for (int i 0; i 10; i) {printf(%d , a[i]);}printf(\n);return 0;
}
数组的初始化 在定义数组的同时进行赋值称为初始化 全局数组若不初始化编译器将其初始化为零 局部数组若不初始化内容为随机值
// 定义一个数组同时初始化所有成员变量
int a1[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 初始化前三个成员后面所有元素都设置为0
int a2[10] { 1, 2, 3 }; // 所有的成员都设置为0
int a3[10] { 0 }; // []中不定义元素个数定义时必须初始化
int a4[] { 1, 2, 3, 4, 5 }; // 定义了一个数组有5个成员
核心概念数组名它是一个地址的常量代表数组中首元素的地址。
#include stdio.hint main()
{// 定义一个数组同时初始化所有成员变量int a[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 数组名是一个地址的常量代表数组中首元素的地址printf(a %p\n, a);printf(a[0] %p\n, a[0]);int n sizeof(a); // 数组占用内存的大小10个int类型10 * 4 40int n0 sizeof(a[0]); // 数组第0个元素占用内存大小第0个元素为int4int num n / n0; // 元素个数printf(n %d, n0 %d, num %d\n, n, n0, num);return 0;
}
3.2 二维数组
二维数组的语法格式
数据类型 数组名[行的个数][列的个数];
注意二维数组的下标也是可以省略的但是有条件在初始化时行数可以省略但是列数不能省略。
//定义一个二维数组
int c[2][4];
printf(sizeof(c) %d %d\n, sizeof(c), 2 * 4 * sizeof(int));//二维数组的行数可以省略但是列数不能省略在初始化时可以这样操作
//系统会根据列数自动指定行数最终得到的函数所得到的元素个数移动是列的整数倍
int d[][4] {1, 2, 3, 4, 5};
printf(sizeof(d) %d\n, sizeof(d));
数组的初始化 按行初始化例如
// 声明并初始化
int a[2][2] {{1,2},{4,5}}; // 先声明再初始化
int a[2][2];
a[0][0] 1;
a[0][1] 2;
a[1][0] 4;
a[1][1]5; 逐个初始化例如
int a [2] [3]{2,5,4,2,3,4};
综合案例
#include stdio.hint main(int argc, char *argv[])
{//二维数组的初始化//int a[2][3];//初始化方式1按行初始化//全部初始化//int a[2][3] {{10, 20, 30}, {666, 777, 888}};//局部初始化//没有赋值的位置的元素自动为0//int a[2][3] {{10, 20}, {666}};//初始化方式2逐个初始化//全部初始化//int a[2][3] {1, 2, 3, 4, 5, 6};//局部初始化//没有赋值的位置的元素自动为0int a[2][3] {1, 2, 3};printf(%d\n, a[0][0]);printf(%d\n, a[0][1]);printf(%d\n, a[0][2]);printf(%d\n, a[1][0]);printf(%d\n, a[1][1]);printf(%d\n, a[1][2]);return 0;
}
核心概念二维数组元素的引用方法数组名[行下标] [列下标];
#include stdio.hint main(int argc, char *argv[])
{//一维数组的引用以及一维数组的遍历int a[6] {111, 222, 333, 444, 555, 666};a[3] 10000;//一维数组的遍历int i;for(i 0; i sizeof(a) / sizeof(int); i){printf(a[%d] %d\n, i, a[i]);}printf(**********************\n);//二维数组的引用以及二维数组的遍历int b[3][4] {1, 2, 3, 4, 23 5, 6, 7, 8, 24 9, 10, 11, 12};b[2][0] 666;//二维数组的遍历int m, n;//外层循环控制行数for(m 0; m 3; m){//内层循环控制列数for(n 0; n 4; n){printf(%‐4d, b[m][n]);}printf(\n);}return 0;
}