实参a的副本的产生及使用,该如何解决
实参a的副本的产生及使用
#include<iostream.h>
double* fn(const double* pd)
{
static double ad=32;
ad+=*pd;
cout<<"fn being called...the value is:"<<*pd<<endl;
return &ad;
}
int main()
{
double a=345.6;
const double*pa=fn(&a);
cout<<*pa<<endl;
a=55.5;
pa=fn(&a);
cout<<*pa<<endl;
}
下列程序注释写到在函数fn()中,没有生成实参a的副本,访问*pd就直接访问a,请问实参a的副本是什么?起什么作用?使用什么情况能生成实参a的副本? 谢谢
------解决方案--------------------
实参a没有副本,传递的是a的地址,a的地址有副本。副本存储的是地址,指向a变量。
#include<iostream.h>
double* fn(const double* pd)
{
static double ad=32;
ad+=*pd;
cout<<"fn being called...the value is:"<<*pd<<endl;
return &ad;
}
int main()
{
double a=345.6;
const double*pa=fn(&a);
cout<<*pa<<endl;
a=55.5;
pa=fn(&a);
cout<<*pa<<endl;
}
下列程序注释写到在函数fn()中,没有生成实参a的副本,访问*pd就直接访问a,请问实参a的副本是什么?起什么作用?使用什么情况能生成实参a的副本? 谢谢
------解决方案--------------------
实参a没有副本,传递的是a的地址,a的地址有副本。副本存储的是地址,指向a变量。