<span style="font-size:18px;">#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 20;
const int *p= &a; //常量指针 ,修饰指向的实体,也即间访值,间访值为常量,不能修改,而指针值(地址)是可以修改的
std::cout<<"p= &a"<<endl;
std::cout<<p<<endl;
std::cout<<"p= &b"<<endl;
p = &b;
std::cout<<p<<endl;
std::cout<<*p<<endl;
int c = 11;
int d = 21;
int const *ip = &c;
std::cout<<"ip = &c :"<<ip<<endl;
ip=&d;
std::cout<<"ip = &d :"<<ip<<endl;
return 0;
}</span>
常量指针:是指向常量的指针,也即const修饰指向的实体类型,指针值(地址)可以改,但间访值不能改。如上:*p = 100;程序就会出错,因为更改了间访值。
const int *p = &a;和int const *p = &a;是一样的,可以通过这样记忆。const int a = 20;和int const a = 20;两种写法的效果是一样的,都是定义a为常量;
*******************************************************************************************
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b =11;
int * const p = &a;
*p =100;
std::cout<<*p<<endl;
}
指针常量:是相对于指针变量而言的。也就是指针值(地址)不能修改,但间访值可以修改。如果 p = &b;会发生错误,因为修改了地址。
定义指针常量还是常量指针,就看const的修饰了。若const修饰指针本身,则为指针常量;若修饰的是指针类型(指向的实体类型),则为常量指针。