对于指针来说可以是const,
对于值来说也可以是const。
一、指针是const
●表示一旦得到了某个变量的地址,就不能再只指向其他的变量
int *const p = &i; //p是const
*p = 26; //OK
p++ ; //ERROR
具体例子:
#include <iostream>
using namespace std;
int main()
{
int i = 10;
int *const p =&i;
cout<<"i= "<<i<<endl;
*p = 26;
cout<<"i= "<<i<<endl;
int j = 20;
p = &j; //ERROR,不能再只指向其他的变量
}
二、所指的值是const
●表示不能通过这个指针去修改那个变量。(并不能是的那个变量成为const)
const int *p =&i;
*p = 26; //ERROR
i = 26; //OK
int j =28;
p =&j; //OK
具体例子:
#include <iostream>
using namespace std;
int main()
{
int i =20;
const int *p =&i;
int j = 2;
p = &i;
cout<<"*p = "<<*p<<endl;
p = &j;
cout<<"*p = "<<*p<<endl;
cout<<"i = "<<i<<endl;
cout<<"j = "<<j<<endl;
*p = 26; //ERROR,不能通过指针去修改变量.
cout<<"*p = "<<*p<<endl;
}
判断哪个被const了的标志是const在*的前面还是后面。
1.const在*的左边,表示所指的东西不能被修改。 data const
2.const在*的右边,表示指针不能被修改。pointer const
const int *p1 =&i; <==> int const *p2 = &i;