Is there any built in swap function in C which works without using a third variable?
There is no such function in standard C.
(In C++ you have std::swap().)
Maybe a macro from this question can be useful for you.