• 数组是怎么索引的


    int a[3];

    如果a的地址是x;

    那么a[i]的地址=x+i*sizeof(int);

    所以a[0]的地址=x  //数组开始的地址和数组第一个元素的地址是同一个地址

    a[1]的地址=x+1*4=x+4

    a[2]的地址=x+2*4=x+4

    所以只要给出一个数组的第一个元素开始的地址和这个数组元素的类型就能求得这个数组中所有元素的地址了,从而可以访问

    数组中所有元素的值了。

    所以函数如果有数组作为参数的时候会有这种情况

    int test(int a[])

    {

      int b=a[2];

      return 1;

    }

    传递进来的数组是没有元素大小的,它只有数组的首地址和数组的类型,但只需要这两个我们就能存取数组中所有元素了。

    实际上当你给test函数传递int a[3]的时候这个3也是没有意义的,因为这个3根本就没有被传递给test函数,所以在给函数传递

    数组的时候,数组大小可有可无的,但如果函数内部需要用到数组大小怎么办? 可以把数组大小作为另一个参数传递进来。

    比如int test(int a[],int length)

  • 相关阅读:
    HDU 5087 (线性DP+次大LIS)
    POJ 1064 (二分)
    Codeforces 176B (线性DP+字符串)
    POJ 3352 (边双连通分量)
    Codeforces 55D (数位DP+离散化+数论)
    POJ 2117 (割点+连通分量)
    POJ 1523 (割点+连通分量)
    POJ 3661 (线性DP)
    POJ 2955 (区间DP)
    LightOJ 1422 (区间DP)
  • 原文地址:https://www.cnblogs.com/yfish/p/9837652.html
Copyright © 2020-2023  润新知