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

时间:2025-03-17 12:34:25

数组大纲

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]

越界 用到了数组外面的内容 不属于你的地方 没人可以管 会出问题
数组大小不确定时 可以稍微大一点点

测试代码

 /*
字符串后面 才有\0 字符串的末尾 \0
char arr[10]; //字符数组 字符串一般存放在字符数组中
*/ #include<stdio.h>
#include<string.h>//用函数strlen时要用到 int main()
{//一维数组复习
#if 0
char arr[] = "hello world\0"; //还有很大的空间没有存放数据
char brr[] = {'a','b','c'};//相当于赋值“abc” 空间大小为4 多出来的一位默认赋值为0 而在ASCII中 /0就是 0
char crr[] = "123456\0";//定义的是后赋值 才可以省略大小 (有效无效字符都要存进去) printf("%s\n",brr);
printf("%d\n",sizeof(arr));//求数组大小 (单位字节)
printf("%d\n", strlen(arr));//字符串长度 长度是算到\0为止的个数
//strlen 字符串的有效长度 算到\0为止
scanf("%s",arr);//数组名 不需要取地址符 scanf中间有空格 会当成两个字符串
gets_s(arr, );//100 字符串长度最多能到100 gets专门用于字符串数组的输出
gets(arr);
//回车作为结束
puts(arr);//专门用于字符串的输出
printf("输入的内容是%s",arr);//输出 #endif //多维数组
/*
多维数组
二维数组 重点 (三位以上基本不会用到)
都是用来存数据 一个班有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] 越界 用到了数组外面的内容 不属于你的地方 没人可以管 会出问题
数组大小不确定时 可以稍微大一点点
*/
#if 1
//int dArr[10][20];//一般前面的10称为行 后面的20称为列
//for (int i = 0; i < 10; ++i)
//{
// for (int j = 0; j < 20; ++j)
// {
// dArr[i][j] = i*j;
// }
//}
//for (int i = 0; i < 10; ++i)//先行
//{
// for (int j = 0; j < 20; ++j)//后列
// {
// printf("%d\t",dArr[i][j]);
// }
// printf("\n");
//} //test[i][j] 和 test[i][j+1] 地址 相差4个字节(一个int大小)
//test[i][j] 和 test[i+1][j] 地址 相差16个字节(一行的大小 4个int大小)
//本质二维数组存放方式和一位数组无异 但是他得使用方式不一样
//地址是一样的 类型是不一样的 使用方式也不一样
//&arr和&arr[0]的数据类型不一样 但是存的内容是一样的
int test[][];
for(int i = ; i < * ; ++i)
{
test[][i] = i;
}
for (int i = ; i < ; ++i)
{
for (int j = ; j < ; ++j)
{
printf("%d\t",test[i][j]);
printf("%p\t",&test[i][j]);//%p 打印地址 是16进制
}
printf("\n");
} #endif while ();//防止闪屏
getchar();
return ;//表示函数结束
}

2018-07-17 17:31:02