世纪佳缘网站开发语言,asp在网站开发中起什么作用,用dw设计一个简单网页成品,怎么清理网站后门文件数组是一组相同类型元素的集合。 目录
一维数组
数组的创建
数组的初始化
数组的使用
数组在内存中的存储
二维数组
数组的创建
数组的初始化
数组的使用
数组在内存中的存储
数组名
数组名作函数参数 一维数组
数组的创建
type_t arr_name [const_n];
//type_… 数组是一组相同类型元素的集合。 目录
一维数组
数组的创建
数组的初始化
数组的使用
数组在内存中的存储
二维数组
数组的创建
数组的初始化
数组的使用
数组在内存中的存储
数组名
数组名作函数参数 一维数组
数组的创建
type_t arr_name [const_n];
//type_t 是指数组的元素类型
//arr_name是数组的名字命名遵循C语言命名规则
//const_n 是一个常量表达式用来指定数组的大小
数组的初始化 数组初始化时可以不指定数组大小此时初始化的元素个数就是数组的大小。 在指定数组的大小后如果初始化的元素个数小于数组元素的个数则剩余元素初始化为0。元素与元素之间用 , 隔开 int arr1[] { 1, 2, 3, 4};
int arr2[5] { 12345 }
int arr3[10] { 1, 2, 3 }; 初始化字符数组时要用 将要初始化的字符括起来或者用字符对应的ASCII码初始化。 char arr4[3] { a, 98, c};
char arr5[] { a, b, c}; 可以用一个 字符串 初始化字符数组此时数组结尾默认加一个字符串结束标志 \0。数组大小必须大于等于字符串字符个数加1 char arr6[] abcdef;
char arr7[] ; 数组的使用 可以通过下标引用操作符 [ ] (创建数组时的 [ ] 不是下标引用)用下标访问数组元素。对于一个有 n 个元素的数组数组元素下标从0开始到 n - 1 结束。 #include stdio.hint main()
{int arr[10] { 0 };int i 0;//遍历数组for (i 0; i 10; i){printf(%d , arr[i]);}printf(\n);//给数组每个元素赋值for (i 0; i 10; i){arr[i] i;}//打印下标为5的数组元素值printf(%d\n, arr[5]);//遍历数组for (i 0; i 10; i){printf(%d , arr[i]);}return 0;
} 数组的大小可以通过关键字 sizeof 计算获得。sizeof用来计算类型大小。 #include stdio.hint main()
{int arr[10] { 0 }; //此数组类型int[10], 每个数组元素的类型intint sz sizeof(arr) / sizeof(arr[0]);printf(%d\n, sz);return 0;
} 数组在内存中的存储 数组在内存中是连续存放的低地址到高地址。 #include stdio.hint main()
{int arr[10] { 0 };int i 0;int sz sizeof(arr) / sizeof(arr[0]);for (i 0; i sz; i){printf(arr[%d] %p\n, i, arr[i]);}return 0;
} 二维数组
数组的创建
type_t arr_name [const_n1][const_n2];
//type_t 是指数组的元素类型
//arr_name是数组的名字命名遵循C语言命名规则
//const_n1 是一个常量表达式用来指定数组的行数
//const_n2 是一个常量表达式用来指定数组的列数
数组的初始化
int arr[3][4] { 1, 2, 3, 4 }; 先初始化完一行才会初始化下一行如果初始化的元素个数小于数组元素的个数则剩余元素初始化为0。 int arr1[3][4] { {1, 2},{4, 5} }; 可以用 { } 初始化指定行。 int arr1[][4] { 1, 2, 3, 4, 5 };
int arr2[][4] { {2, 3},{4, 5} }; 二维数组如果有初始化行可以省略列不能省略。 原因在二维数组在内存中的存储 数组的使用 二维数组的使用与一维数组类似也是通过下标来访问的行和列下标都是从0开始。 #include stdio.hint main()
{int arr[3][4] { 0 };int i 0;//赋值for (i 0; i 3; i){int j 0;for (j 0; j 4; j){arr[i][j] i * 4 j;}}//打印for (i 0; i 3; i){int j 0;for (j 0; j 4; j){printf(%-2d , arr[i][j]); //%-2d右对齐不够两位数补空格}printf(\n);}return 0;
} 数组在内存中的存储 二维数组在内存中也是连续存放的低地址到高地址。 #include stdio.hint main()
{int arr[3][4];int i 0;for (i 0; i 3; i){int j 0;for (j 0; j 4; j){printf(arr[%d][%d] %p\n, i, j, arr[i][j]);}}return 0;
} 因此对于二维数组我们也可以这样理解二维数组就是每个元素是一维数组的数组。 因为二维数组在内存中连续存放所以二维数组的行可以省略列不能省略因为如果省略了列就无法确定每一行有多少个元素从而不知道下一行的起点。 数组名 无论是一维数组还是二维数组数组名都表示的是首元素的地址。两种例外情况数组名 和 sizeof(数组名)中数组名表示的是整个数组 #include stdio.hint main()
{int arr1[10];int arr2[3][4];printf(arr1[0] %p\n, arr1[0]); //打印首元素的地址printf(arr1 %p\n, arr1);printf(arr2[0][0] %p\n, arr2[0][0]); //打印首元素的地址printf(arr1 %p\n, arr1);return 0;
} 数组名
#include stdio.hint main()
{int arr1[10];int arr2[3][4];printf(arr1 %p, arr1 1 %p, arr1[1] %p\n,arr1, arr1 1, arr1[1]);printf(arr2 %p, arr2 1 %p, arr2[1][0] %p\n, arr2, arr2 1, arr2[1][0]);printf(arr1 %p, arr1 1 %p, arr1[1] %p\n, arr1, arr1 1, arr1[1]);printf(arr2 %p, arr2 1 %p, arr2[1][0] %p\n, arr2, arr2 1, arr2[1][0]);return 0;
} sizeof(数组名)
#include stdio.hint main()
{int arr1[10];int arr2[3][4];printf(sizeof(arr1[0]) %d, sizeof(arr1) %d\n, sizeof(arr1[0]), sizeof(arr1));printf(sizeof(arr2[0][0]) %d, sizeof(arr2) %d\n, sizeof(arr2[0][0]), sizeof(arr2));return 0;
} 数组名作函数参数
void test1(int arr[]) //因为数组名表示首元素地址所以等价于void test(int* arr)
{}void test2(int arr[][4])//二维数组行可以省略列不能省略等价于void test2(int (*arr)[4])//数组指针指针篇
{}#include stdio.hint main()
{int arr1[10];int arr2[3][4];test1(arr1);test2(arr2);return 0;
}