关于数组的一些知识点

数组

为什么需要数组:

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列的二维数组
posted @ 2021-08-06 15:33  柯星  阅读(11)  评论(0编辑  收藏  举报  来源