zoukankan      html  css  js  c++  java
  • 数组

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

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

    数组的初始化(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 二维数组与二维表

  • 相关阅读:
    【书上讲解】平面上最近点对问题
    【书上讲解】快速排序
    【书上讲解】归并排序的非递归写法
    【例题 2-6】汉诺塔问题
    汉诺塔问题详解
    【例题2-5】整数的划分
    【例题2-4】排列问题
    【1-5】最大间隙问题
    【1-4】金币阵列问题
    【1-2】字典序问题
  • 原文地址:https://www.cnblogs.com/xulinmei/p/7443862.html
Copyright © 2011-2022 走看看