关于数组的一些知识点
数组
为什么需要数组:
1、为了解决大量同类型数据的存储和使用
2、为了模拟现实世界
数组的分类:
一维数组
怎样定义一维数组:
为n个变量连续分配空间
所有的变量数据类型必须相同
所有变量所占的字节大小必须相同
例子:
int a[5]
有关一维数组的操作:
初始化
完全初始化
int a[5] = {1,2,3,4,5}
不完全初始化,未被初始化的元素自动为零
int a[5] = {1,2,3}
不初始化,所有元素是垃圾值
清零
int a[5] = {0}
错误写法:
int a[5];
a[5] = {1,2,3,4,5}; //错误
只有在定义数组的同时才可以整体赋值,其他情况下整体赋值都是错误的
int a[5] = {1,2,3,4,5}
a[5] = 100; //error,因为没有a[5]这个元素,最大只有a[4]
int a[5] = {1,2,3,4,5};
int b[5];
如果要把a数组中的值全部赋值给b数组
错误的写法:
b = a; //error
正确的写法:
for (i=0; i<5;++i)
b[i] = a[i];
赋值
排序
求最大/最小值
倒置
查找
插入
删除
二维数组
int a[3][4];
总共是12个元素,可以当作3行4列看待,这12个元素的名字依次是
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[i][j] 表示第i+1行j+1列的元素
int a[m][n]; 该二维数组右下角位置的元素只能是a[m-1][n-1]
初始化:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
}
操作:
输出二维数组的内容:
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
}
//输出数组内容
for (i=0; i<3; ++i)
{
for (j=0; j<4; ++j)
printf(“%d ”,a[i][j]);
printf(“\n”);
}
对二维数组排序
求你每一行的最大值
判断矩阵是否对称
矩阵相乘
多维数组
是否存在多维数组
不存在
因为内存是线性一维的
n维数组可以当作每个元素是n-1维数组的一维数组
比如:
int a[3][4];
该数组含有3个元素的一维数组
只不过每个元素都可以再分成4个小元素
int a[3][4][5];
该数组是含有3个元素的一维数组
只不过每个元素都是4行5列的二维数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下