注册 登录
编程论坛 C++教室

这个类似swap()函数功能 请教大伙意见

tedted 发布于 2016-09-20 14:22, 1925 次点击
#include <iostream>

using namespace std;

void change(int a, int b)  
{
    int  k,kk,temp;

    k = a, kk = b;
    temp = k;
    k = kk;
    kk = temp;

    a = k, b = kk;
}

int main(void)
{
    int x = 44;
    int y = 55;

    change(x,y)
    cout << "x=" << x << endl;
    cout << "y=" << y << endl;

    return 0;
}



3 回复
#2
rjsp2016-09-20 14:34
什么“意见”,不知所云
#3
tedted2016-09-20 15:14
@rjsp没有,就是请教  请教指正
对不起 不过发现还是错了 以上代码没能起到交换实参作用 是不是要交换两个的地址才行
还是太菜 见笑  估计大伙看到会笑而不语。。。...
得版主亲自点拨
#4
rjsp2016-09-20 15:32
C++ 中标准 std::swap 函数如下
程序代码:
template<class T> inline void swap( T& lhs, T& rhs )
{
    if( &lhs != &rhs )
    {
        T t = std::move( lhs );
        lhs = std::move( rhs );
        lhs = std::move( t );
    }
}
当然,实际上会比这个更复杂

如果是C语言,大体如下
程序代码:
#include <stdio.h>

void change( int* a, int* b )
{
    int t = *a;
    *a = *b;
    *b = t;
}

int main( void )
{
    int x = 44;
    int y = 55;

    printf( "x=%d, y=%d\n", x, y );
    change( &x, &y );
    printf( "x=%d, y=%d\n", x, y );

    return 0;
}

1