交换数组中的元素
C语言版
void swap(int* a, int* b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
typedef struct {
...
} Element;
void swap(Element* a, Element* b)
{
Element tmp;
memcpy(&tmp, a, sizeof(Element));
memcpy(a, b, sizeof(Element));
memcpy(b, &tmp, sizeof(Element));
}
缺点是没有通用性
C++版
template <class T>
void swap(T& a, T& b)
{
T c(a);
a = b;
b = c;
}
C++语言可以写类的拷贝函数,就不必使用内存拷贝了。
反转字符串
void reverseStr(char* str, int strLen)
{
for(int i = 0; i < strLen / 2; i++) {
swap(str + i, str + strLen - 1 - i);
}
}