Post

5.数组

5.数组
目录 {{" - [array](#array) - [数组定义:](#%E6%95%B0%E7%BB%84%E5%AE%9A%E4%B9%89) - [数组的大小:sizeof(num);](#%E6%95%B0%E7%BB%84%E7%9A%84%E5%A4%A7%E5%B0%8Fsizeofnum) - [数据在内存中的地址](#%E6%95%B0%E6%8D%AE%E5%9C%A8%E5%86%85%E5%AD%98%E4%B8%AD%E7%9A%84%E5%9C%B0%E5%9D%80) - [数组名](#%E6%95%B0%E7%BB%84%E5%90%8D) - [二维数组定义](#%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E5%AE%9A%E4%B9%89) - [二维数组的数组名](#%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E7%9A%84%E6%95%B0%E7%BB%84%E5%90%8D) - [字符数组](#%E5%AD%97%E7%AC%A6%E6%95%B0%E7%BB%84) - ['\0'的要点](#%5C0%E7%9A%84%E8%A6%81%E7%82%B9) " | markdownify }}

array

数组定义:

  • 内存:把若干个相同的数据类型的变量存放在一块连续的内存中。
  • 单位:数组最小单位 元素
  • 数组意义:将相同类型的数据存放在一个集合中,这种的构造类型就是数组
  • 数组初始化:若数组值初始化部分元素,其他元素被初始化为0
  • 定义数组:int num[]; - 括号内为 数组中元素的定义 个数,使用时 ,从0开始;
  • example :
    • int num[10]={0,1}; //按顺序初始化
    • int num[10]={[5]=5}; //指定元素5 初始化

数组的大小:sizeof(num);

个数 sizeof(num)/sizeof(num[0]);

数据在内存中的地址

  • 内存的最小单位是 1字节
  • 内存中每个字节都有编号,这个编号被称为 内存的地址
  • 数据在内存中的地址, 就是它在内存中的起始地址;

数组名

int a[5];

  • a[0] 第0个元素
  • a 代表数组,也代表第0个元素地址 - &a[0]
  • &a 代表整个数组地址
  • 数组名 a 是个常量,是一个地址。
  • 三个数组名的数值相等,意义在于 加1 时体现的差异

二维数组定义

  1. int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
  2. int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
  3. a[2][1]=23;
    • 多维数组定义时,列为基础下标,必须要写
    • 例如:int a[][3]={};

二维数组的数组名

  • &a[0][0] +1 元素地址加 1 ,跨过一个元素
  • a[0] +1 元素地址加1,跨过一个元素
  • &a[0] +1 行地址加1,跨过一行
  • a+1 行地址加1,阔过1行
  • &a + 1 二维数组地址加1,跨过整个数组

字符数组

1
2
3
4
    char  a[5] = {'a','b','c','d','e'};普通的字符数组
    char  a[5] = {'a','b','c','d','\0'};//字符数组中含有\0字符的,它也是字符串
    char  a[5] = "abcd";//定义了一个字符数组,存的是abcd\0
    char  a[] = "world";// 

‘\0’的要点

  • ‘\0’ == 0
  • ‘\0’ 后面不要跟数字,多个数字可能是一个转义字符
    • 如\012 == \n
  • ‘\ddd’ 八进制转义字符 ‘xdd’十六进制转义字符
This post is licensed under CC BY 4.0 by the author.