数组大纲
多维数组
二维数组 重点 (三位以上基本不会用到)
都是用来存数据
一个班有20个人 可以用一维数组存20个人的年龄
int age[20];
一个年级10个班 每个班20人
int age[10][20];//二维数组
一个学校 6个年级 每个年级10个班 每个班20人 一个年级作为一个元素
int age[6][10][20];//三维数组
定义时 后面有多少个[]就是几维数组
二维数组 数组的数组
--->数组元素 也是数组
age[0][1][2] 0年级的1班学号是2的同学
age[0] 0粘结
gae[0][1] 0年级1班
age 三维数组
age中的元素---> age[0] age[1] age[2] age[3] age[4]
越界 用到了数组外面的内容 不属于你的地方 没人可以管 会出问题
数组大小不确定时 可以稍微大一点点
测试代码
1 /* 2 字符串后面 才有 3 4 字符串的末尾 5 char arr[10]; //字符数组 6 7 字符串一般存放在字符数组中 8 */ 9 10 #include<stdio.h> 11 #include<string.h>//用函数strlen时要用到 12 13 int main() 14 {//一维数组复习 15 #if 0 16 char arr[100] = "hello world "; //还有很大的空间没有存放数据 17 char brr[4] = {'a','b','c'};//相当于赋值“abc” 空间大小为4 多出来的一位默认赋值为0 而在ASCII中 /0就是 0 18 char crr[] = "123456 ";//定义的是后赋值 才可以省略大小 (有效无效字符都要存进去) 19 20 printf("%s ",brr); 21 printf("%d ",sizeof(arr));//求数组大小 (单位字节) 22 printf("%d ", strlen(arr));//字符串长度 长度是算到 为止的个数 23 //strlen 字符串的有效长度 算到 为止 24 scanf("%s",arr);//数组名 不需要取地址符 scanf中间有空格 会当成两个字符串 25 gets_s(arr, 100);//100 字符串长度最多能到100 gets专门用于字符串数组的输出 26 gets(arr); 27 //回车作为结束 28 puts(arr);//专门用于字符串的输出 29 printf("输入的内容是%s",arr);//输出 30 31 #endif 32 33 //多维数组 34 /* 35 多维数组 36 二维数组 重点 (三位以上基本不会用到) 37 都是用来存数据 38 39 一个班有20个人 可以用一维数组存20个人的年龄 40 int age[20]; 41 一个年级10个班 每个班20人 42 int age[10][20];//二维数组 43 一个学校 6个年级 每个年级10个班 每个班20人 一个年级作为一个元素 44 int age[6][10][20];//三维数组 45 46 定义时 后面有多少个[]就是几维数组 47 48 二维数组 数组的数组 49 --->数组元素 也是数组 50 age[0][1][2] 0年级的1班学号是2的同学 51 age[0] 0粘结 52 gae[0][1] 0年级1班 53 age 三维数组 54 age中的元素---> age[0] age[1] age[2] age[3] age[4] 55 56 越界 用到了数组外面的内容 不属于你的地方 没人可以管 会出问题 57 数组大小不确定时 可以稍微大一点点 58 */ 59 #if 1 60 //int dArr[10][20];//一般前面的10称为行 后面的20称为列 61 //for (int i = 0; i < 10; ++i) 62 //{ 63 // for (int j = 0; j < 20; ++j) 64 // { 65 // dArr[i][j] = i*j; 66 // } 67 //} 68 //for (int i = 0; i < 10; ++i)//先行 69 //{ 70 // for (int j = 0; j < 20; ++j)//后列 71 // { 72 // printf("%d ",dArr[i][j]); 73 // } 74 // printf(" "); 75 //} 76 77 78 79 //test[i][j] 和 test[i][j+1] 地址 相差4个字节(一个int大小) 80 //test[i][j] 和 test[i+1][j] 地址 相差16个字节(一行的大小 4个int大小) 81 //本质二维数组存放方式和一位数组无异 但是他得使用方式不一样 82 //地址是一样的 类型是不一样的 使用方式也不一样 83 //&arr和&arr[0]的数据类型不一样 但是存的内容是一样的 84 int test[3][4]; 85 for(int i = 0; i < 3 * 4; ++i) 86 { 87 test[0][i] = i; 88 } 89 for (int i = 0; i < 3; ++i) 90 { 91 for (int j = 0; j < 4; ++j) 92 { 93 printf("%d ",test[i][j]); 94 printf("%p ",&test[i][j]);//%p 打印地址 是16进制 95 } 96 printf(" "); 97 } 98 99 #endif 100 101 102 while (1);//防止闪屏 103 getchar(); 104 return 0;//表示函数结束 105 }
2018-07-17 17:31:02