欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++学习(十五)(C语言部分)之 数组二

程序员文章站 2022-03-27 18:52:58
数组大纲 多维数组 二维数组 重点 (三位以上基本不会用到) 都是用来存数据 一个班有20个人 可以用一维数组存20个人的年龄 int age[20]; 一个年级10个班 每个班20人 int age[10][20];//二维数组 一个学校 6个年级 每个年级10个班 每个班20人 一个年级作为一个 ......

 

数组大纲

C++学习(十五)(C语言部分)之 数组二

 

多维数组
二维数组 重点 (三位以上基本不会用到)
都是用来存数据

一个班有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 字符串后面 才有\0
  3 
  4 字符串的末尾 \0
  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\0"; //还有很大的空间没有存放数据
 17     char brr[4] = {'a','b','c'};//相当于赋值“abc” 空间大小为4 多出来的一位默认赋值为0 而在ASCII中 /0就是 0
 18     char crr[] = "123456\0";//定义的是后赋值 才可以省略大小 (有效无效字符都要存进去)
 19 
 20     printf("%s\n",brr);
 21     printf("%d\n",sizeof(arr));//求数组大小 (单位字节)
 22     printf("%d\n", strlen(arr));//字符串长度 长度是算到\0为止的个数
 23     //strlen 字符串的有效长度 算到\0为止
 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\t",dArr[i][j]);
 73     //    }
 74     //    printf("\n");
 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\t",test[i][j]);
 94             printf("%p\t",&test[i][j]);//%p 打印地址 是16进制
 95         }
 96         printf("\n");
 97     }
 98 
 99 #endif
100     
101     
102     while (1);//防止闪屏
103     getchar();
104     return 0;//表示函数结束
105 }

 

 

 

2018-07-17 17:31:02