As far as I know, const int *
implies that I can change the pointer but not the data, int * const
says that I can't change the pointer address but I can change the data, and const int * const
states that I can't change any of them.
However, I can't change a address of a pointer defined with the type const int *
. Here is my example code:
void Func(const int * pInt)
{
static int Int = 0;
pInt = ∬
Int++;
}
int wmain(int argc, wchar_t *argv[])
{
int Dummy = 0;
const int * pInt = &Dummy;
//const int * pInt = nullptr; // Gives error when I try to pass it to Func().
std::cout << pInt << '\t' << *pInt << std::endl;
std::cout << "-------------------" << std::endl;
for (int i=0; i<5; i++)
{
Func(pInt); // Set the pointer to the internal variable. (But, it doesn't set it!)
std::cout << pInt << '\t' << *pInt << std::endl;
}
return 0;
}
Code output:
00D2F9C4 0
-------------------
00D2F9C4 0
00D2F9C4 0
00D2F9C4 0
00D2F9C4 0
00D2F9C4 0
I would expect the address of pInt
to change to point to the internal variable inside the Func()
function after calling Func()
for at least once. But it doesn't. I keeps pointing at the Dummy
variable.
What is happening here? Why don't I get the result I expect?
(IDE: Visual Studio 2015 Community Version)