C:07---数组

一、数组定义

  • 数组大小可以使用宏定义
  • 数组大小不能使用变量,可以使用常量

二、数组注意事项

  • int num[5]={1,2,3};   //未初始化的都是0

  • int  num[]={1,2,3};  //数组大小自动设置为3
  • int num[5];   //都是垃圾值
  • int num[5]={};  //编译器报错
  • 使用常量定义数组

三、二维数字

  • 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[][4]={1,2,3,4,5,6,7,8,9,10,11,12};   //自动是被是int  a[3][4];
  • int a[3][]={1,2,3,4,5,6,7,8,9,10,11,12};  //程序报错
  • int a[3][4]={1,2,3};  //缺省处用0补齐
  • int a[3][4]={{1,2},{3,4,5,6},{7,8,9,10}};  //缺省处用0补齐
  • int a[3][4]={{,2},{3,4,5,6},{7,8,9,10}};   //错误,逗号前面不能缺省

四、数组与指针的关系

一维数组:

  • 数组名就是数组的首地址(数组名相当于指针)

二维数组:

  • 数组名相当于第一个元素的地址(数组名相当于指针)
  • 每一行的首地址就等于二维数组的一维下标

int a[2][3]={{1,2,3},{4,5,6}};

  • a==&a[0][0]==a[0]==&a[0]

  • a+1==&a[1][0]==a[1]==&a[1]   //a+1相当于加了一行的地址

  • &a[1][1]==*(a+1)+1
  • ,&a[1]==*(a+1)

  • 若二维下标超界,就会向下一行去取值
  • 若二维下标低于0,就会向前一行去取值

  • *a[1]==a[1][0]

  • *a[1]+1==*(a[1]+1)==a[1][1]

  • 遍历二维数组

五、指针数组、数组指针

  • 指针数组:是一个数组,里面都是指针
  • 数组指针:是一个指针,指向于数组

数组指针

  • 一维数组的指针

  • 二维数组的指针(列数必须与定义的数组列数相同)
  • int (*p)[3]=a;  //正确
  • int *p=&a[0][0]; //错误的

指针数组(数组明前要加*号,并且数组的大小)

  • 一个数组,里面存放的是指针

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/88803818