关于C++习题

来源:百度知道 编辑:UC知道 时间:2024/09/27 21:29:35
谁能帮我解释下面的代码?我是新手,越详细越好。
#include <iostream.h>
int a[]={2,5,3,8,6,9,5,7};
void fun(int [],int,int&);

void main()
{
int x,y;
fun(a,8,x);
fun(a+3,5,y);
cout<<x+y<<endl;
}
void fun(int b[],int n,int&d)
{
d=0;
for(int i=0;i<n;i+=2)
d+=b[i];
}

#include <iostream.h> //这个不用说了把
int a[]={2,5,3,8,6,9,5,7}; //定义数组
void fun(int [],int,int&); //声明fun函数

void main()
{
int x,y;
fun(a,8,x); //调用fun函数传递的数组是{2,5,3,8,6,9,5,7};
fun(a+3,5,y); //调用fun函数,这是传递的数组是{8,6,9,5,7};
cout<<x+y<<endl; 输出结果
}
/*fun这个函数我直接说功能吧!b[]是把调用的时候数组复制过来,这个题目就是把a数组复制给b数组,n就是把调用fun函数的第二个参数复制过来,int&d是给调用fun函数的第三个参数取别名,复制:在调用的时候不会修改原来的数值,但是取别名就有可能修改了,这个程序就修改了.*/
void fun(int b[],int n,int&d)
{
d=0;
for(int i=0;i<n;i+=2) //把数组偶数项同时小于n的项相加.
d+=b[i];
}
其实这个程序就等价
#include <iostream.h>
int a[]={2,5,3,8,6,9,5,7};
int fun(int [],int);

void main()
{
int x,y;
x=fun(a,8);
y=fun(a+3,5);
cout<<x+y<<endl;
}
int fun(int b[],int n)
{
int d=0;
for(int i=0;i<n;i+=2)
d+=b[i];
return d;//返回d的值,则执行到x=fun(a,8); x=2+3+6+5,执行到y=fun(a+3,5),y=8+9+7;