求C++题目的解答,非常感谢!急求,多谢!

1,假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;”,则正确的语句为(A)。A.BOOK&x=&book;B.B... 1,假定有“struct BOOK{char title[40]; float price;}; BOOK *book;”,则正确的语句为( A )。
A. BOOK &x=& book; B. BOOK &x=book
C. BOOK &x=new BOOK; D. BOOK &x=Book;求解释
2、在一道程序中,
#include<istream.h>
void f1(int x,int y)
{
x=x+y;
y=x+y;
cout<<"x,y="<<x<<" "<<y<<endl;
return x+y;
}
int main()
{
int x=5,y=8;
int z=f1(x,y);
cout<<"x="<<x<<",y="<<y;
cout<<",z="<<z<<endl;
}输出的结果是 13,21 5,8 34,5和8是保留原来的结果不变。也就是说局部变量不受改变的影响。但是在另外一道程序题目中,却保留了上次的计算结果,这是怎么回事,程序如下:
void f1(int &x,&y)
{{int z=&x,&x=&y,&y=z;}

void f2(int *x,int *y)
{int z=*x,*x=*y,*y=z;}
int main()
{
int x=5,y=8;
f1();
cout<<x<<" "<<y<<" "<<endl;
f2();
cout<<x<<" "<<y<<" "<<endl;
}为什么在这个程序中就保留上一次的结果呢?
急求解答,在此多谢了!
展开
 我来答
fnulling
2012-06-19 · TA获得超过255个赞
知道小有建树答主
回答量:228
采纳率:0%
帮助的人:224万
展开全部
1、定义一个BOOK的引用x,引用book的地址,B/C/D都是语法错误
2、由于是值传递,会拷贝一份实参传递给形参,交换的是实参的拷贝,与实参没有关系
3、引用和指针,传递的是址传递,即形参与实参指向同一块内存地址,不管是形参还是实参去修改那块内存中的值时,由于内存地址不变,那块内存地址中的值发生了改变,导致形参与实参指向的内存中的值也发生了变化,所以能改变
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式