It doesn't work work the same reason as int array [] = {1,2}; array++; doesn't work.
You can't apply ++ on an array type. You would need a pointer to the first item of the array instead. Thus one solution would have been to do this:
const char** ptr = &Props[0];
while(*ptr) printf("%s\n", *ptr++);
But that's pretty horrible code and also contains another bug, namely the lack of an end condition in the array. For this solution to work, the array should have been declared as {"Cp", "Cv", "Mu", "H", NULL};.
Don't do weird things like this just because you can though. Just use a for loop with an integer iterator, as demonstrated in another answer.
static const char *Props[] = {"Cp", "Cv", "Mu", "H", NULL}; const char **p = Props; while(*p) printf("%s\n", *p++);Props+1does not changeProps.Props+1does not meanProps = Props+1