nam*_*ith 1 c++ pointers pass-by-reference
#include <iostream>
void swap(int &pi, int &pj){
std::cout << "In function swap: " << &pi << " " << &pj << "\n";
int temp = pi;
pi = pj;
pj = temp;
}
int main(){
int i = 10, j = 20;
int *pi = &i, *pj = &j;
swap(pi, pj);
std::cout << *pi << " " << *pj;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上述程序不会给出任何编译错误.(虽然在非POINTER TO REFERENCE类型中交换功能)并给出正确的输出.但无论我想在"交换"功能内打印,都不会打印到控制台.谁能解释一下为什么?
看起来你可能正在使用std::swap交换两个指针而不是调用自己的交换例程.我怀疑你有一个using namespace std;你没有向我们展示的地方?尝试将交换例程的名称更改为eg my_swap,然后查看调用是否my_swap有效(它应该因编译错误而失败).
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |