以下代码的输出应该是什么? 我不明白* Y--做什么。如果有人能解释什么* Y在F1中做到这么奇怪。提前谢谢。
int F1(int , int *);
int A = 3;
int B = 7;
int C = 4;
int D = 2;
void main(void)
{
A = F1 (C, &D);
printf("\n%d %d %d %d", A, B, C, D);
C = 3;
C = F1 (A, &C);
printf("\n%d %d %d %d", A, B, C, D);
}
int F1(int X, int *Y)
{
int A;
A = X * *Y;
C++;
B += *Y;
printf("\n%d %d %d %d", A, B, C, D);
*Y--;
return (C);
}
使用CodeBlocks 输出为:
8 9 5 2
5 9 5 2
15 13 4 2
5 13 4 2
但我不明白为什么13,如果我有B = B + * Y ... B = 12(?)
答案 0 :(得分:0)
C = F1(A, &C) ;
之前A = 5,B = 9,C = 3,D = 2
当我们拨打F1(A, &C)
时,请看这里我们正在传递 C 的地址,现在Y实际上是指 C 。
函数调用中的指令执行
local A variable = 5 * 3( Y指向的值)
C ++,Global C现在变为4;
B + = * Y(Y指向的值。由于之前的C,这将是4 ++)
所以B = 9 + 4 。这就是13号排在第三线的原因。