C++中两个数据交换的几种实现方式

1. 宏定义

#define SWAP(type, a, b) {type temp = a; a = b; b = temp;}


2. 引用,不使用临时变量
void change(int &a, int &b)
{
a = a^b;
b = a^b;
a = a^b;
}

3. 指针,任意类型数据
int change(void* a, void* b, size_t sz) {
    void* temp = malloc(sz); 
    if (!temp) {
        return -1;
    }
    memcpy(temp, a, sz);
    memcpy(a, b, sz);
    memcpy(b, temp, sz);
    free(temp);
    return 0;
}

你可能感兴趣的:(C++)