Is there a built-in way to swap two variables in C
There is no equivalent in C - in fact there can't be, as C doesn't have template functions. You will have to write separate functions for all the types you want to swap.
You need to define it yourself.
C doesn't have templates.
If such function does exist it would look like
void swap(void* a, void* b, size_t length)
, but unlikestd::swap
, it's not type-safe.And there's no hint such function could be inlined, which is important if swapping is frequent (in C99 there's
inline
keyword).We could also define a macro like
#define SWAP(a,b,type) {type ttttttttt=a;a=b;b=ttttttttt;}
but it shadows the
ttttttttt
variable, and you need to repeat the type ofa
. (In gcc there'stypeof(a)
to solve this, but you still cannotSWAP(ttttttttt,anything_else);
.)And writing a swap in place isn't that difficult either — it's just 3 simple lines of code!