# include<stdio.h> void p(int *x,int y){ ++*x; y=y+2; } void main() { int x=2,y=3; p(&y,y); printf("

# include<stdio.h>
void p(int *x,int y){
++*x;
y=y+2;
}
void main()
{
int x=2,y=3;
p(&y,y);
printf("%d#%d",x,y);
}

2#4

p函数的 int *x
得到main中 y的地址
故p函数的 x指向 main的y
p中 *x 和 main的y 占用的是同一段内存,p里 ++*x
就是main的y加1了

p 的y 接收 main的y的值
p的y和main的y是两个不同的内存
p 里 不管 p的y怎么变都不影响 main的y

所以main里x不变还是2 y变为4追问

如果把p(&y,y)换成p(&x,y)呢?

追答

3#3

追问

您的意思是只有在主函数中指针指定的变量才变化,没有指针的指定的就没变化是吗? 请您解释一下,我快考试了,帮帮忙了。。。。谢谢您

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-03
p(&y,y);
第2个回答  2012-06-10
x=5,y=1
第3个回答  2012-06-03
2#4追问

可以详细解释一下吗?、谢谢大神

追答

看 veket的小号 的解释吧,完全正确。

#include<stdio.h> void p(int*X) {printf("%d",++*x); } void main...
4呗,把y的地址传给p函数,然后在函数里面就给加1,然后输出到屏幕上了

#include<stdio.h> void main() { int x=1,y; y=++x*++x; printf("%d...
第二个++x, x=3; 同样道理 第一个++x 也=3; 因为x的内存地址不变.第二个++x加了1后=3.第一个++x也会改变自身的值.所以:结果=9 在visual C++6.0编译后结果=9

...#include "iostream.h" void main() { int x=2,y; y=(x++)\/3...
x++ 和 ++x是不一样的。 举个简单的例子。x = 1; y = x++;这样的话,先取x的值给y ,即y = 1,然后 x+1 ,x= 2。但是:如果是: x = 1; y = ++ x。这个就是先给x + 1 . x= 2.再取 y = 2;这就是前++ 和 后++ 的不同。

#include <stdio.h> void main() { int x,y; for (x=1,y=1;x+y<=1...
\/*但你输出的是*\/x+y \/*应该改成*\/((x+y)%10==0)

#include<stdio.h> void main() { int x=5; int y=2+(x+=x++,x+8...
(x+=x++,x+8,++x) 逗号语句,【这里不等价于:x=x+(x++,x+8,++x)】,应该和编译器有关吧!先算的x++,x+8,++x,得x=7,然后x=5+7,x就成了12了。最后y=2+12=14

#include<stdio.h> main() {int x=3,y=
自增与自减运算符可在变量的左边(前缀)与右边(后缀),运算规则教材上有的,手机打字很麻烦

#include <stdio.h> main( ) { int x, y; for(x=30, y=0; x>=10...
第二次:执行前x=14,y=3,满足循环条件;运算结束x=7,y=5;循环结束x=6,y=6 第三次:执行前x=6,y=6,虽然x<10不满足条件,但是y满足循环条件,继续执行循环体内的运算;运算结束x=3,y=8;循环结束x=2,y=9 第四次:执行前x=2,y=9,继续执行;运算技术,x=1,y=11;循环结束x=0,...

#include <stdio.h> void main( ) { int x,y,z; x=y=1; z=x++,y++...
开始的时候x=1 y=1 然后z=x,x进行自加1,也就是此时的x=2 再过来y自加1,即y=2 最后把x、y的结果以十进制的形式打印出来,即 2,2

#include<stdio.h> void main() { int x,y,z;x=y=1;z=(++x)+(++y)+...
z=(++x)+(++y)+(x++);原式相当于z=n1+n2+n3 先执行n1=++x 执行后,x=2,n1=2 再执行n2=++y 执行后,y=2,n2=2 然后是n3=x++ 执行后,n3=2,x=3 最后为z=2+2+2 得z=6

#include <stdio.h> void main() { int x,y; x=y=0; while (x<10) x...
一共执行4次循环 第一次执行完y=1,x=1 第二次执行完y=2,x=3 第三次执行完y=3,x=6 第四次执行完y=4,x=10 循环条件不成立,输出4,,10

相似回答