分为 passed by reference, passed by value,按引用传递和按值传递 Passed by Value: void reset(int *ip) { *ip = 0; cout << "*ip " << ip << " " << *ip << " " << &ip << endl; ip = 0; cout << "ip " << &ip << " " << ip << " " << *ip << endl; //cout << "*ip " << *ip << " " << endl; } int main() { //线性表list int list[MAXSIZE] = {1,2,3,4,5}; //cout << &list[0] << " " << &list[1] << endl; int *p = new int(23); cout << "p address " << &p << endl; cout << "p pointed address " << p << " " << *p << endl; reset(p); cout << p << " " << *p << endl; return 0; } 指针变量保存的是一个地址值,而指针变量本身也被保存在一个地址里,所以: - *p得到的是p指针保存的内容,即指向的地址 指针作为参数传递时,其实是值传递,ip是一个新的变量,只不过是它指向的地址跟p是一样的,证据就是&p跟&ip的值是不同的。所以ip = 0;这句,是将ip保存的地址值改为了0000 0000,而&ip仍然不变 |
|