数组只能存放一种数据类型比如int类型的数组、float类型的数组里面存放的数据称为“元素”。数组的定义首先声明数组的类型然后声明数组元素的个数也就是定义需要多少存储空间。数组格式与初始化格式元素类型 数组名[元素个数];比如int[3];数组元素有顺序之分每个元素都有一个唯一的下标索引而且都是从0开始。数组中第i个元素的访问方式:a[i]数组元素的初始化int a[3] {10, 9, 6};int a[3] {10,9};int a {11, 7, 6};int a[4] {[1]11,[0] 7};里面的个数必须是一个固定值可以是常量(比如6、8)、常量表达式(比如34、5*7)。绝对不能使用变量或者变量表达式来表示元素个数大多数情况下不要省略元素个数当数组作为函数的形参和数组初始化时除外。C语言中编译器是不会对数组下标越界进行检查的所以自己访问数组元素时要注意。一维数组数组的内存细节分析#includeint main{char cs[5] {a,A,D,e,f};printf(%p\n,cs); // 数组名就代表数组的地址for (int i 0; i{printf(cs[%d]的地址是:%p\n,i ,cs[i]);}return 0;}上面代码中地址分配分析如下一维数组的元素作为函数实参与同类型的简单变量作为实参一样是单向的值传递即数组元素的值传给形参从而形参是改变不影响实参。数组名代表着整个数组的地址如果一维数组的名字作为函数实参传递的是整个数组即形参数组和实参数组完全相同是存放在同一存储空间的同一个数组。这样形参数组修改时实参数组也同时被修改了。形参数组的元素个数可以省略。// b是test函数的形参(形式参数)voidtest(int b){b 9;}intmain{int a[3];a[0] 10;printf(函数调用前的a[0]%d\n, a[0]);test(a[0]); // a[0]是test函数的实参(实际参数)printf(函数调用后的a[0]%d, a[0]);return0;}#include//数组作为函数参数可以省略元素个数//数组作为函数参数传递是整个数组的地址修改了函数形参数组元素的值会影响到外面的实参数组void change(int array[]){printf(array %p\n,array);array[0] 100;}int main{int ages[6] {10,11,13,15,11,18};printf(array %p\n,ages);change(ages);printf(%d\n,ages[0]);return 0;}输出结果为array 0x7fff5be26c00array 0x7fff5be26c00100数组的小练习找最大值/*设计一个函数找出整型数组元素的最大值*/#includeintmaxOfArray(color:#ff0000;intarray[], int length){color:#ff0000;// 数组当做函数参数传递时会当做指针变量来使用指针变量在64bit编译器环境下占据8个字节//int size sizeof(array);//printf(array%d\n, size);//sizeof(array);// 1.定义一个变量存储最大值(默认就是首元素)int max array[0];// 2.遍历所有元素找出最大值for (int i 1; i{// 如果当前元素大于max就用当前元素覆盖maxif (array[i] max){max array[i];}}return max;}intmain{int ages {11, 90, 67, 150, 78, 60, 70, 89, 100};int ages2 {11, 90, 67, 150, 78, 60, 70, 89, 100};//int size sizeof(ages);//printf(ages%d\n, size);int max maxOfArray(ages, color:#ff0000;sizeof(ages)/sizeof(int));printf(%d\n, max);return0;}二维数组一个数组能表示一个班人的年龄如果想表示很多班呢二维数组是一个特殊的一维数组它的元素是一维数组。例如int a可以看作由一维数组a和一维数组a组成这两个一维数组都包含了3个int类型的元素。定义形式类型 数组名[ 行数] [列数]int a[2][3]; //2行3列的二维数组二维数组的存放顺序是按行存放的先存放第一行的元素再存放第2行的元素。例如int a的存放顺序是a[0][0] → a[0][1] → a[0][2] → a[1][0] → a[1][1] → a[1][2]二维数组的内存存储分配注意a、a也是数组是一维数组而且a、a就是数组名因此a、a就代表着这个一维数组的地址。二维数组的初始化int ages2[3][5] {{10, 11, 90, 89, 70},{10, 11, 90, 89, 70},{10, 11, 90, 89, 70}};
郑州网站建设
网页设计
企业官网