您的位置:首页 > 其它

数组名作为函数参数时会退化为指针

2015-03-16 21:54 127 查看
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语言中,数组名除作为变量的标识符之外,数组名还代表了该数组在内存中的起始地址,因此,当数组名作函数参数时,实参与形参之间不是"值传递",而是"地址传递",实参数组名将该数组的起始地址传递给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组分配存储单元。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐