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)