|
你可以理解成“C语言中根本没有数组这种东西”,有的只是连续分配空间的一种语法糖。
数组在绝大多数情况下都会转换成一个指针,例如
int a[] = {1,2,3};
a[1];
复制代码
a[1]其实不是读取数组元素,编译器总是把它处理成 *(a + sizeof(int) * 1),所以你甚至可以写 1[a]
函数传递参数时,如果参数是数组,则会转换成指向数组首地址的指针
也就是你写
void fun(int a[]);
复制代码
编译器会自动转化为
void fun(int* a);
复制代码
如果你写
void fun(int a[10]);
复制代码
也会被转化为
void fun(int* a);
复制代码
数组的长度是无法用一个参数就传递进去的,因为数组这时候被转换成了指针 |
|