I have this function signature:
void myFunction(int *const ptr);
What's the point of the const
keyword in this particular context?
Even if ptr
wasn't a const
variable, I couldn't modify to what address it points to, because it's passed by value, so if I had another function like this:
void myAnotherFunction(int *ptr);
And inside its implementation did something like this:
//...
ptr = malloc(1023);
//...
This wouldn't affect the passed value (outside this function, of course).
So the question is: what's the point of using myFunction()
signature instead of myAnotherFunction()
one? (beside that you get a compile-time error).
ptr = malloc(1023); This wound't affect the passed value (outside this function, of course).
To sum up. Indeed that way original pointer would not be affected (it would still point to same object because ptr
is copy of the original pointer), but you can still make that pointer point to a different object inside myAnotherFunction
and change value of that object through that pointer. e.g. in myAnotherFunction
you could do:
ptr = &y;
*ptr = 9;
Whereas in the first case when you have a constant pointer, you can't assign a new address to it, but you can still change the value of object to which it points using dereferencing. A constant pointer means you can't assign a new address to it, pointer to a constant object means you can't change value of object to which it points, but you can assign new address to the pointer.