我最近審查谷歌的C++ materials和整個following code來抓演示指針C++指針 - ressignment在函數調用
void Unknown(int *p, int num);
void HardToFollow(int *p, int q, int *num);
void Unknown(int *p, int num) {
int *q;
q = #
*p = *q + 2;
num = 7;
}
void HardToFollow(int *p, int q, int *num) {
*p = q + *num;
*num = q;
num = p;
p = &q;
Unknown(num, *p);
}
main() {
int *q;
int trouble[3];
trouble[0] = 1;
q = &trouble[1];
*q = 2;
trouble[2] = 3;
HardToFollow(q, trouble[0], &trouble[2]);
Unknown(&trouble[0], *q);
cout << *q << " " << trouble[0] << " " << trouble[2];
}
我的問題是:將q指針被分配給原來的麻煩[1]。當發送到HardToFollow時,q指針(現在稱爲p)被更新爲值4,並且麻煩[1]隨後也被更新。緊接着,原來的q指針(再次,在這個函數中被稱爲p)被重定向到指向一個局部變量(p = & q)。儘管如此,在程序結束時,我們原來的q指針又回到了指向麻煩的地步[1]。這怎麼發生的?
你在哪裏看到的東西,改變了'q'指針? 'q'指針不是「在這個函數中被稱爲p」。該函數有一個叫做'p'的指針,它的起始值與'q'指針相同。 – 2012-07-17 08:47:41
請注意,這些不是「C++」,而是舊的純C指針。 – 2012-07-17 08:56:20
@IgorR。雖然C和C++指針大部分以相似的方式起作用,但它們並不是一回事。 C和C++是不同的語言;不要混合它們。 – Alex 2012-07-17 12:55:28