目录页 Contents 1 一维数组 2 二维数组 3 数组作为函数的参数 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 1 2 一维数组 二维数组 3 数组作为函数的参数
维数组 口怎么定义数组 ▣怎么使用数组 口数组在内存中是怎么存放的 ▣数组的赋值和初始化 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 1 一维数组 怎么定义数组 怎么使用数组 数组在内存中是怎么存放的 数组的赋值和初始化
维数组的声明 数组:具有一定顺序关系的同类型数据的集合 维数组的声明 声明一个长度为n的一维数组 类型说明符 变量名[n]i 口类型说明符:数组元素的数据类型 n:数组的长度,即元素的个数 int×[5]∥声明一个长度为5的-维数组 维数组的引用 变量名[k灯] ÷注意:下标k的取值范围为0到n-1 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 一维数组的声明 4 数组:具有一定顺序关系的同类型数据的集合 int x[5] // 声明一个长度为 5 的一维数组 一维数组的声明 声明一个长度为 n 的一维数组 类型说明符:数组元素的数据类型 n:数组的长度,即元素的个数 一维数组的引用 † 注意:下标 k 的取值范围为 0 到 n-1 类型说明符 变量名[n]; 变量名[k]
一维数组举例 ex05_array_01.cpp #include using namespace std; int main() { int i,x[5]; for(i=0;i<5;i++) x[i]=2*i; for(i=0;i<5;i+) cout <<"x["<<i<"]="<<x[i]<endl; 注意:数组的下标不能越界,否则会引起严重的后果! 5 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 一维数组举例 5 #include using namespace std; int main() { int i, x[5]; for (i=0; i<5; i++) x[i] = 2*i; for (i=0; i<5; i++) cout << "x[" << i << "]=" << x[i] << endl; } ex05_array_01.cpp 注意:数组的下标不能越界,否则会引起严重的后果!
注意事项 类型说明符变量名[n] 几点注记 ·数组长度必须是正整数,可以是表达式,但值必须是正整数 int n=5; 1ntm=2,n=3; int n; int x[n]; int x[m*n+2]; cin <n; int x[n]; ex05_array_02.cpp ·只能逐个引用数组元素(循环),而不能一次引用整个数组 ·数组名代表数组存放在内存中的首地址 ·数组元素在内存中顺序存放,它们的地址是连续的 例:×[5]在内存中的存放顺序是 ×[o]x[1]x[2]x[3]x[4] 6 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 注意事项 6 类型说明符 变量名[n]; 几点注记 ► 数组长度必须是正整数,可以是表达式,但值必须是正整数 int m=2, n=3; int x[m*n+2]; int n=5; int x[n]; int n; cin << n; int x[n]; ex05_array_02.cpp ► 只能逐个引用数组元素(循环),而不能一次引用整个数组 ► 数组名代表数组存放在内存中的首地址 ► 数组元素在内存中顺序存放,它们的地址是连续的 例:x[5] 在内存中的存放顺序是 x[0] x[1] x[2] x[3] x[4]
—维数组初始化 口初始化:在声明的同时赋初值 intx[5]={0,2,4,6,8}; 可以只给部分元素赋初值 intx[5]-{0,2,4;/∥从前往后依次初始化,剩下的赋值0 全部初始化时可以不指定数组长度 intx[]={0,2,4,6,8};/根据所赋初值的个数自动确定数组长度 注意:只能对数组元素赋值,不能对数组名赋值! int x[5]; x[9]=1;//0K X=6; /ERROR! 7 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 一维数组初始化 7 初始化 :在声明的同时赋初值 int x[5]={0,2,4,6,8}; ► 可以只给部分元素赋初值 ► 全部初始化时可以不指定数组长度 int x[5]={0,2,4}; // 从前往后依次初始化,剩下的赋值 0 int x[]={0,2,4,6,8}; // 根据所赋初值的个数自动确定数组长度 注意:只能对数组元素赋值,不能对数组名赋值! int x[5]; x[0]=1; // OK x=6; // ERROR!
2 二维数组 口怎么定义,怎么使用 ▣与一维数组的关系 ▣在内存中是怎么存放的 ▣赋值和初始化,多维数组 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 2 二维数组 怎么定义,怎么使用 与一维数组的关系 在内存中是怎么存放的 赋值和初始化,多维数组
二维数组的声明 类型说明符变量名[m[n] 口声明一个mxn的二维数组 维数组的引用 变量名[i][j] ÷注意下标的取值范围,不要越界! intx[2][3]; x[0][9]=1;x[0][1]=3;x[6][2]=5; for(j=0;j<3;j++) ×[1][j]=2*x[9][j]; 9 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 二维数组的声明 9 声明一个 m x n 的二维数组 二维数组的引用 † 注意下标 的取值范围,不要越界! 类型说明符 变量名[m][n]; 变量名[i][j] int x[2][3]; x[0][0] = 1; x[0][1] = 3; x[0][2] = 5; for (j=0; j<3; j++) x[1][j] = 2*x[0][j];
二维数组存储方式 二维数组的存储:按行存储 例:x[2][3]在内存中的存放顺序是 x[o][9] x[0][1] x[6][2] ×[1][0] x[1][1] x[1][2] x[0] x[1] X 二维数组被看成是一维数组的数组 10 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 二维数组存储方式 10 二维数组的存储 :按行存储 例:x[2][3] 在内存中的存放顺序是 x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2] x[0] x[1] x 二维数组被看成是一维数组的数组
二维数组初始化 ▣全部初始化 intx[2][3]={1,3,5,2,6,18}; int×[][3]={1,3,5,2,6,10};/注:只能省第一维的长度! 口分组初始化 intx[2][3]={{1,3,5},{2,6,18}}; 口部分初始化 intx[2][3]={{1},{2,6}}; 11 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 二维数组初始化 11 分组初始化 部分初始化 全部初始化 int x[2][3]={1,3,5,2,6,10}; int x[][3]={1,3,5,2,6,10}; // 注:只能省第一维的长度! int x[2][3]={{1,3,5}, {2,6,10}}; int x[2][3]={{1}, {2,6}};