如何实验验证实参数组元素和形参数组元素共享同一内存?
可以将实参数组元素的内存地址和形参数组元素的内存地址比较,相同则为同以内存
比如: int x ; x = &FC[0];可以得到第一个元素的内存地址。
2. Average函数内查找最大值和最小值时需要更新pmax和pmin的值还是*pmax和*pmin的值?为什么?这两种做法有何区别、对main的影响如何
两者都可以;因为*pmax和*pmin是数值,pmax和pmin只是指针,指向数据的地址。两者修改都可以达到效果。对main的没有影响!
#include
double Average(double d[],int n,double *pmax,double *pmin)
{
int i;
double sum=0;
*pmax=d[0];
*pmin=d[9];
for(i=0;i
sum=sum+d[i];
if(d[i]>*pmax)
{
*pmax=d[i];
}else if(d[i]<*pmin)
{
*pmin=d[i];
}
}
return sum/n;
}
void main(void)
{
double FC[10]={21.2,21.3,20.8,29.9,21.4,17.0,21.4,21.5,21.1,21.9};
double *p_max;
double *p_min;
double d_max,d_min;
double ave,ave2;
p_max=&d_max;
p_min=&d_min;
ave=Average(FC,10,p_max,p_min);
ave2=Average(FC,10,p_max,p_min);
printf("平均值为%.1lf\n",ave);
printf("平均值为%.1lf\n",ave2);
printf("最大值为%.1lf\n",d_max);
printf("最小值为%.1lf\n",d_min);
}
思考1:形参是不占用内存的,他只是把实参传递过去而已,所以就别纠结共亨内存了。
2:指针不是你这样用的,你这样用是完全更改了FC这个数组的值了。