数组是怎么索引的

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)

 

posted @ 2018-10-23 16:52  eatwhat  阅读(2912)  评论(0编辑  收藏  举报