**数组 **
定义:一维组数,即是多个变量的集合, 习惯上将数组中的每个变量称为一个元素
**下标: **用于区分数组元素的方法
数组越界,难以发现。可能会改变别的变量的值,可能没什么问题,可能是程序崩溃(最容易被发现)
数组的初始化(3+1)三种情况+一种新增的C99的方法
int arry[] = {1,2,3,4,5,6,7,8,9,0}; //数组长度==初始化元素的个数时,可以不写数组长度
int c[10] = {1,2,3,4,5}; //数组长度大于初始化元素的个数时,多余的元素会被自动清0
int f[3] = {1,2,3,4,5}; //数组长度小于初始化元素的个数时,多余的元素会被丢弃
int g[5] = {[2] = 20,[0] = 5,[4] = 40}; //可以指定元素的初始化,未指定的元素将被清0
数组名与数组首地址
int a[10];
NSLog(@"%p",a); //数组名是数组中第一个元素的地址,是常量地址
NSLog(@"%p",&a[0]); //数组首地址是指数组中第一个元素的地址
数组的赋值与拷贝
赋值:是元素的赋值,只能逐个元素地赋值,不能整体赋值。数组没有赋值的概念,但是有初始化的概念。
a[0] = 10; //数组的赋值只能逐个元素赋值,不能整体赋值
//数组的拷贝
int b[10] = {1,2,3,4,5,6,7,8,9,0};
int c[10] ;
for (int i = 0; i<10; i++) {
c[i] = b[i];
printf("%d ",c[i]);
}printf("
");
遍历:逐个操作数组元素
int a[10] = {1,2,3,4,5,6,7,8,9,0};
//正向遍历,一个一个地输出数组里的元素
for (int i = 0; i<10; i++) {
if (a[i]%2==0) {
printf("%d ",a[i]);
}
}
printf("
");
//反向遍历
for (int i = 9; i>=0; i--) {
printf("%d ",a[i]);
}
二维数组:是多个一维数组的集合
二维数组的初始化:
a[1][1] = {{1,2},{2,3}};
int b[][3] = {{1,2,3},{4,5,6},{7,8,9}};//高维可以省略,低维不能省略
int c[4][3] = {{1,2,3},{4,5},{6},{7,8,9}};//{}里有{},在自己规定的数组内补0
int e[3][4] = {1,2,3,4,5,6,7,8,9};//{}里没有{}最后一个数组自动补0
int a[n][3];//当数组长度为变量时,数组不能被初始化
二维数组的数组名:
a[0]保存第一个数组的第一个元素的地址。
a[1]保存第二个数组的第一个元素的地址。以此类推
2.4 二维数组与二维表