|
|
|
|
|
by AbacusAvenger
3322 days 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 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 So basically "const char []" and "char * const" are more logically equivalent here. |
|