题目描述:
直接上代码:
#includeusing namespace std; #include #include //传入指针形参,函数对形参做的交换操作都不会影响到实参 void swap01(int* a, int* b) { auto temp = a; a = b; b = temp; } //传入引用形参,交换形参指针也就是交换对应的实参的指针 void swap02(int*& a, int * & b) { auto temp = a; a = b; b = temp; } void test03() { int i = 300; int j = 450; int* p = &i; int* q = &j; cout <<"p q 初始指向:"<< * p << " " << *q << endl; swap01(p, q); cout << "通过swap01函数传入指针形参后,p q 的指向:" << *p << " " << *q << endl; swap02(p, q); cout << "再通过swap02函数传入引用形参后,p q 的指向:" << *p << " " << *q << endl; } int main() { test03(); system("pause"); return 0; }
结论:swap01函数没有交换两个int指针,swap02函数成功交换了两个int指针。想要交换两个指针的话,函数的形参必须得是swap02() 所示的引用形式,否则只是复制实参后对副本进行操作。
运行结果:



