3 ms·
The code is more interesting if you -do- actually dereference the pointer, too. I've changed the prototype of "bogus" to take a single char as the first argumen
by AbacusAvenger 9y ago
The code is more interesting if you -do- actually dereference the pointer, too. I've changed the prototype of "bogus" to take a single char as the first argument, and dereference the two pointers inside the do_arr/do_ptr functions:
https://goo.gl/jZYx0f https://goo.gl/jZYx0f
So the "do_arr" version "knows" what value is at * arr because "arr" is immutable, so the compiler can just choose to load a constant. The "do_ptr" version has to load from memory instead.
But what if we tell the compiler that the value of "ptr" won't change (i.e. "char * const" instead of "const char * ")? The code becomes the same:
https://goo.gl/iNaUHe https://goo.gl/iNaUHe
So basically "const char []" and "char * const" are more logically equivalent here.