#include#includevoid fun(float *p1,float *p2,float *s){s=(fl
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 09:59:11
#include
#include
void fun(float *p1,float *p2,float *s)
{s=(float *)calloc(1,sizeof(float));
*s=*p1+*p2++;
}
int main()
{float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s);printf("%5.2f\n",*s);
}
为什么输出是1.10,求解fun到底发生了什么
#include
void fun(float *p1,float *p2,float *s)
{s=(float *)calloc(1,sizeof(float));
*s=*p1+*p2++;
}
int main()
{float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;
fun(a,b,s);printf("%5.2f\n",*s);
}
为什么输出是1.10,求解fun到底发生了什么
你认为应该是多少呢?输出是正确的,其值就是a[0],它被初始化为1.1.因为fun中为s指针重新分配了指向,*s=*p1+*p2++;这一句中的s已不再指向a了.因为指针形参本身也是拷贝调用,所以main中的s仍然是指向a的,printf("%5.2f\n",*s);输出自然是a[0].可以这样验证,在fun中的*s=*p1+*p2++;后加一句printf("%5.2f\n",*s);,它就应该输出11.1了……
再问: 就是说fun中的s和main中的s一点关系都没,fun中的s换成任意标识都行?这题fun中的*s是用来混淆视听的?
再答: 是的。fun中的s可以换成其他符号。
再问: 就是说fun中的s和main中的s一点关系都没,fun中的s换成任意标识都行?这题fun中的*s是用来混淆视听的?
再答: 是的。fun中的s可以换成其他符号。
#include#includevoid fun(float *p1,float *p2,float *s){s=(fl
#include#includevoid fun (char *w,int n){char s,*p1,*p2;p1=w
#include main() {int s,n; float pi=0,t; t=float(s)/n; for(s=
float
#include #include #include int fun(float x[],int n) /f
#include main() { float r,h,s; scanf("%f %f",&r,&h); s=1/3*(
#include main() { float a,n,i,j,s; scanf("%d",&a); for(n=1.0
#include#include,main(){int s;float n,t,p;t=1.0;p=0;n=1.0;s=
#include"stdio.h" #include"math.h" void main() {float F,c; s
程序填空题1、求1!+2!+3!+.+10!#include void main(void){float s = 0,t
#include main() { float a,b,c,s,area; printf("a,b,c(f)"); sc
#include void main(){ float F; float c; scanf("%f",&F); c=5(