c is a pointer to an Array of ints and the number to be converted is in x.
(x >> i) & 0x1; the number is shifted right i times and andded with 1.
*(C++) = the result is assigned to the array and the array index is incremented.
If x = 20, you would end up with
c[] = {0,0,1,0,1}; in the array.
The only purpos I can see for this is to print out the number in binary?