std :: cout没有打印到控制台

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类型中交换功能)并给出正确的输出.但无论我想在"交换"功能内打印,都不会打印到控制台.谁能解释一下为什么?

Pau*_*l R 9

看起来你可能正在使用std::swap交换两个指针而不是调用自己的交换例程.我怀疑你有一个using namespace std;你没有向我们展示的地方?尝试将交换例程的名称更改为eg my_swap,然后查看调用是否my_swap有效(它应该因编译错误而失败).

  • @namith:当天的教训:避免`使用命名空间......;`:) (2认同)