#include<iostream>
using namespace std;
void HardToFollow(int *p, int q, int *num);
void HardToFollow(int *p, int q, int *num) {
*p = q + *num;
*num = q;
num = p;
p = &q;
cout << *p << " " << q << " " <<*num<<endl;
// value is ``1 1 4
}
main() {
int *q;
int trouble[3];
trouble[0] = 1;
q = &trouble[1];
*q = 2;
trouble[2] = 3;
HardToFollow(q, trouble[0], &trouble[2]); // 2 1 3
cout << *q << " " << trouble[0] << " " << trouble[2]<<endl;
// value become 4 1 1}
大家好我是初學者到計算器,我真的不知道爲什麼我的第一輸出HardToFollow
功能,價值1
,1
和4
。輸出的值是不同的(指針)
但是,當涉及到主要功能輸出它變成4
,1
和1
。我花了很多時間嘗試理解,但我不能。
希望有人能幫助我。
使用調試器。 – 2017-10-21 15:15:53
除了遍歷代碼,使用調試器,我建議你閱讀[良好的C++書](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list )。語句'num = p; p =&q;'只修改變量的本地副本,並且一旦函數返回,這些更改就不會被保留。 –
@AlgirdasPreidžius,代碼很好。這顯然是一個「難以遵循」的例子,教師提供這個例子來迫使學生理解爲什麼兩個輸出是不同的。我相信教師不會希望學生詢問有關計算器的解釋。 –