C语言问题,跪求大神解答!--x. y++
发布网友
发布时间:2024-10-10 07:48
我来回答
共3个回答
热心网友
时间:2024-12-06 05:57
结果:输出为“4,2,7#4,1,6”。
解释:
1)p(&x,y);
printf("%d,%d,%d#",x,y,z);
函数void p(int *x ,int y)
{
--*x;
//这句代码是将变量*x的地址指向区域的内存中的内容减1,此处x=5,&x为该变量所在内存的地址,作为参数传入函数p,--*x即是将&x位置的内存中的内容(此时为5)减1,即&x指向内存中的值现在变为4了,所以x值为4。
y++;
//y作为参数传入函数,p(&x,y)执行时,是在内存开辟一个相同类型大小的内存来存放实参值,函数执行完即释放这段内存,所以p(&x,y)执行后不能改变实参的值。p函数执行完后,打印y值依旧为2。
z = *x+y;
//执行此处是,*x值为4,y为3,z=7。
}
所以,第一个printf输出“4,2,7#”。
2)同理,自己思考下吧。
热心网友
时间:2024-12-06 05:58
427#416
我用dev编译走了一遍。。追问能解释下为什么是416吗
追答第二次调用函数时,p(*x,y)其实是p(*2,4),也就是main函数里的x还是没变,而*y变成了--*y,main中y的值减了1,z=(x++)+(--*y)=5+1=6.
热心网友
时间:2024-12-06 05:58
4 3 7
5 2 7