数组

**数组 **
定义:一维组数,即是多个变量的集合, 习惯上将数组中的每个变量称为一个元素

**下标: **用于区分数组元素的方法
数组越界,难以发现。可能会改变别的变量的值,可能没什么问题,可能是程序崩溃(最容易被发现)

数组的初始化(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\t",c[i]);
        }printf("\n");

遍历:逐个操作数组元素

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\t",a[i]);
            }
        }
      printf("\n");

        //反向遍历
        for (int i = 9; i>=0; i--) {
            printf("%d\t",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 二维数组与二维表

posted @ 2017-08-28 14:55  笑笑就好90  阅读(104)  评论(0编辑  收藏  举报