Name: Anonymous 2015-07-07 1:58
Hey guys, I found this gem in Reddit. This code will reverse an array in place with pointers.
http://www.reddit.com/r/programming/comments/cihh7/three_star_programmer/c0sug3o
http://www.reddit.com/r/programming/comments/cihh7/three_star_programmer/c0sug3o
#include <stdio.h>
void reverse(int ****, size_t);
void swap(int ****, int ****);
int main() {
int arr[]={1, 2, 3, 4};
int *p = arr;
int **pp = &p;
int ***ppp = &pp;
int ****pppp = &ppp;
reverse(pppp, 4);
for (int i = 0; i < 4; i++) {
printf("%d\n", *(***pppp + i));
}
}
void reverse(int ****pppp, size_t size) {
int *s = ***pppp;
int **ps = &s;
int ***pps = &ps;
int ****ppps = &pps;
int *e = (***pppp + size - 1);
int **pe = &e;
int ***ppe = &pe;
int ****pppe = &ppe;
while (***ppps < ***pppe) {
swap(ppps, pppe);
(***ppps)++;
(***pppe)--;
}
}
inline void swap(int ****x, int ****y) {
const int temp = ****x;
****x = ****y;
****y = temp;
}