总结数组相关知识

比眉伴天荒 2022-05-27 07:36 324阅读 0赞

数组总结

一维数组

一维数组的定义和初始化

1.一维数组的定义

类型名 数组名[数组长度]
类型名指定数组中每个元素的类型;
数组名是数组变量的名称;
数组长度是一个整型常量表达式,设定数组的大小。

2.初始化

类型名 数组名[数组长度]={初值表};
int arr1[10] = {1,2,3};
int arr2[] = {1,2,3,4};
int arr3[5] = {1,2,3,4,5};
char arr4[3] = {‘a’,98, ‘c’};
char arr5[] = {‘a’,’b’,’c’};
//数组初始化时,如果全部元素都赋了初值,数组长度可以省略。
char arr6[] = “abcdef”;

一维数组的下标引用

除了优先级之外,下标引用和间接访问完全相同

例如:arr[7]与 *(arr+7)是等同的!

  1. int array[10];
  2. int *ap = array + 2;
  3. //ap:array+2/&array[2]
  4. //*ap:array[2]
  5. //ap[0]:array[2]
  6. //ap+6:array+8/&array[8]
  7. //*ap+6:array[2]+6/间接访问优先级高于加法
  8. //*(ap+6):array[8]
  9. //ap[6]:array[8]
  10. //ap[-1]:array[1]

一维数组在内存中的存储

一维数组在内存中是连续存放的,地址随下标的增长由低到高(即 下标小的元素占低地址 下标大的元素占高地址)

有关一维数组的运算

1数组名单独放在sizeof()内部,数组名表示整个数组,所以sizeof(数组名)计算的是整个数组的大小,单位为字节。
2&数组名,数组名表示整个数组,所以&数组名取的是整个数组地址。
3除此之外,所有数组名表示首元素的地址。

  1. int a[] = {
  2. 1,2,3,4};
  3. printf("%d\n",sizeof(a));//4*4(一个整型占4个字节)=16(单位均为字节)
  4. printf("%d\n",sizeof(a+0));//4(相当于首元素地址的大小)
  5. printf("%d\n",sizeof(*a));//4(相当于首元素地址的大小)
  6. printf("%d\n",sizeof(a+1));//4(第二个元素地址的大小)
  7. printf("%d\n",sizeof(a[1]));//4(第二个元素地址的大小)
  8. printf("%d\n",sizeof(&a));//4(整个数组地址的大小)
  9. printf("%d\n",sizeof(&a+1));//4(下一个数组的地址的大小)
  10. printf("%d\n",sizeof(&a[0]));//4(相当于首元素地址的大小)
  11. printf("%d\n",sizeof(&a[0]+1));4(第二个元素地址的大小)

二维数组

二维数组的定义和初始化

1.二维数组的定义

类型名 数组名[行下标][列下标]
例如:
int a[3][2];//定义一个二维数组a,3行2列,共6个元素

2.二维数组的初始化

int arr[3][4] = {1,2,3,4};//顺序赋初值
int arr[3][4] = { {1,2},{4,5}};//分行赋初值
int arr[][4] = { {2,3},{4,5}};//省略行长度

二维数组在内存中的存储

以arr[3][4]为例:

这里写图片描述

arr[0]相当于第一行元素的数组名
arr[1]相当于第二行元素的数组名
arr[2]相当于第三行元素的数组名

有关二维数组的运算

  1. int a[3][4] = {
  2. 0};
  3. printf("%d\n",sizeof(a));//12*4=48 表示二维数组的大小
  4. printf("%d\n",sizeof(a[0][0]));//4 表示首元素的大小
  5. printf("%d\n",sizeof(a[0]));//16=4*4 表示第一行的大小
  6. printf("%d\n",sizeof(a[0]+1));//4 表示第一行第二个元素地址的大小
  7. printf("%d\n",sizeof(a+1));//4 表示第二行的地址大小
  8. printf("%d\n",sizeof(&a[0]+1));//4 第二行第一个元素地址大小
  9. printf("%d\n",sizeof(*a));//16 第一行元素大小
  10. printf("%d\n",sizeof(a[3]));//16 虽然超出了范围,但仍可计算

发表评论

表情:
评论列表 (有 0 条评论,324人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA相关知识总结

    前言:     根据自己的经验和以往的总结将java分为7个部分,囊括了java领域大部分的知识和技术,如果能掌握约7层左右,再看一些面试题目,大多的java高级工程师的技术