【发布时间】:2015-03-31 19:46:25
【问题描述】:
有人能解释一下代码是如何在这里执行的吗?我不明白第二行的输出是 8 7 8,而第三行的输出是 21 20 21。
#include<iostream>
using namespace std;
//Funtion passed by value and by reference
int fn1(int &a, int b, int *c){
a=b++;
b+=7;
*c= ++a;
return b;
}
int main(){
int x=4, y=7, z=14;
cout<< x<< " " << y<< " "<< z<< endl; // output: 4 7 14
fn1(x,y,&z);
cout<< x<< " " << y<< " "<< z<< endl; // output: 8 7 8 (I dont get this part!!!)
x=9, y=12, z=19;
y=fn1(x,y,&z);
fn1(x,y,&z);
cout<< x<< " " << y<< " "<< z<< endl; // output: 21 20 21(I dont get this part!!!)
return 0;
}
【问题讨论】:
-
这是关于指针的。当您输出变量时,它只是指分配的位置而不是定义的变量。看看这个,你应该有一个想法:cplusplus.com/doc/tutorial/pointers
-
你为什么不明白呢?你认为他们应该是什么?记住post increment and pre increment return different values
-
@NathanOliver 我不认为这真的是因为增量。我相信他需要了解指针与通常的变量。
标签: c++