void arraySum(int a[],int b[])
{
cout < <"sizeof(a)" < <sizeof(a) < <endl;
cout < <"sizeof(a[0])" < <sizeof(int) < <endl;
int length_a = sizeof(a)/sizeof(int);
}
// 等价于:
void arraySum(int *a,int *b)
{
cout < <"sizeof(a)" < <sizeof(a) < <endl;
cout < <"sizeof(a[0])" < <sizeof(int) < <endl;
int length_a = sizeof(a)/sizeof(int);
}
最近在自己写一些小函数,有用到数组名作为参数的情况,在这里记录下学习过程。
一些知识: http://www.cnblogs.com/c-king/archive/2009/03/05/1404202.html
数组名作函数的参数,必须遵循以下原则:
(1)如果形参是数组形式,则实参必须是实际的数组名,如果实参是数组名,则形参可以是同样维数的数组名或指针。
(2)要在主调函数和被调函数中分别定义数组。
(3)实参数组和形参数组必须类型相同,形参数组可以不指明长度。
(4)在C语言中,数组名除作为变量的标识符之外,数组名还代表了该数组在内存中的起始地址,因此,当数组名作函数参数时,实参与形参之间不是"值传递",而是"地址传递",实参数组名将该数组的起始地址传递给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组分配存储单元。