C++中数组名作参数的问题!

[复制链接]
查看11 | 回复4 | 2010-8-12 23:46:41 | 显示全部楼层 |阅读模式
列如double max(const double a[],int a_size)与double max(const double* a,int a_size)
和void raise(const employee & e,double by) 中&e不是e的地址吗?const employee & e表示什么(引用参数我知道,但不知道怎么执行的) ?
另外*a是a[0]是个数值,那么上面&e是地址两个根本不一样啊!
还有a[]和a、*a有什么区别!
这几天一直看不明白!请懂的不吝赐教!分全部给了!

回复

使用道具 举报

千问 | 2010-8-12 23:46:41 | 显示全部楼层
首先给你讲解一下一维数组a[11]中的,a,*a和a[]吧,在一维数组中数组名一般是被当作指针看待的(注意:并不是指针),因此数组名a就是一个地址,他的地址是&a[0]的地址(注意:为避免误人子凝,这里讲清楚一点,数组名a不是表示的是整个数组a[11]的地址,数组a[11]的地址是使用的&a来表示的,具体内容请参看指针,但要注意的是a和&a还有&a[0]他们的地址是相同的,但是表示的意义是有很大差别的,如果你学了int (*p)[11]这样的指针的时候就清楚了。这里不对此问题进行讲解),而a[1]这种类型的就不讲了吧。下面再结合本题给你讲解一下函数的传值问题传递数组实参在给函数传递数组参数时,传递的是数组的第一个元素的地址,而不
回复

使用道具 举报

千问 | 2010-8-12 23:46:41 | 显示全部楼层
max(a[],size)和max(&e,size)都是以首地址和数组大小作参数,double*a不是数值,他是定义了一个指向a首地址的double型指针,也就是int *a含义是定义一个int型指针,而*a表示指针指向的数值
回复

使用道具 举报

千问 | 2010-8-12 23:46:41 | 显示全部楼层
1. a[]用作函数参数,会退化成指针,即和a*一眼,这样写看上去上更明确一点。2. const ep& e ,表示按引用传递。即将e的地址传递进去,const表示函数内不对e进行修改。3. 传指针和引用的区别。引用直接给了地址,传递指针的会有一个指针的拷贝,即指针本身还是按值传递,但是指向的地址是一样的。4. *a 在函数参数表示地址,和a[0
回复

使用道具 举报

千问 | 2010-8-12 23:46:41 | 显示全部楼层
C语言只接受如int fun(int * a);的参数C++扩展到int fun(int & a);其含义为a虽然作为参数输入到函数,但是函数体内可以修改a的值,比如:int app(int & a) {return ++a;}这种特殊的、可以在函数体内改变参数值的用法,叫做【引用】
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行