![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
求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;
}为什么在这个程序中就保留上一次的结果呢?
急求解答,在此多谢了! 展开
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;
}为什么在这个程序中就保留上一次的结果呢?
急求解答,在此多谢了! 展开
1个回答
展开全部
1、定义一个BOOK的引用x,引用book的地址,B/C/D都是语法错误
2、由于是值传递,会拷贝一份实参传递给形参,交换的是实参的拷贝,与实参没有关系
3、引用和指针,传递的是址传递,即形参与实参指向同一块内存地址,不管是形参还是实参去修改那块内存中的值时,由于内存地址不变,那块内存地址中的值发生了改变,导致形参与实参指向的内存中的值也发生了变化,所以能改变
2、由于是值传递,会拷贝一份实参传递给形参,交换的是实参的拷贝,与实参没有关系
3、引用和指针,传递的是址传递,即形参与实参指向同一块内存地址,不管是形参还是实参去修改那块内存中的值时,由于内存地址不变,那块内存地址中的值发生了改变,导致形参与实参指向的内存中的值也发生了变化,所以能改变
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询