我最近审查谷歌的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