数组作为函数形参会退化为指针变量
void sort_array(int a[10]);
void sort_array(int a[10]);
void sort_array(int *a);
//以上三种形参是等价的,数组的方括号在函数的形参中是无意义的,但是void sort_array(int a[0]);会报错,因为方括号中不能为0
再举个例子说明:
从图中的代码可以看出,j并不为数组元素的个数。二是在64位系统中,j=2,在32位系统中,j为1。
因为整型变量在C语言中占4个字节,64为系统地址为64为,则指针变量占8个字节,同理,32为系统中指针变量占4个字节。从上述代码就可以看出,函数形参中的a已经退化为指针变量。