本质;
常量指针:
即常量是指针,指针为常量也就是存放在指针中的那个地址不能改变.指针存储的是地址,类比于int类型
指针常量:
指向常量的指针,不能用于修改其所指对象的值,即指针指向的对象的值是不能修改的,(所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能不能通过其他途径修改.)
实例:
/*@brief:指针常量和常量指针的区别*/
#include <iostream>
using namespace std;
int main()
{
/*0)指针的本质:一种复合类型,类似于int类型*/
int data = 6;
int *pdata = &data;
cout<<"pdata="<<pdata<<endl;
cout<<"&data="<<&data<<endl;
cout<<"&pdata="<<&pdata<<endl;
cout<<"*pdata="<<*pdata<<endl;
//--------------------------------------------------------------
/*1)常量指针,指针是常量*/
int a = 5;
int b = 5;
int *const ptr1 = &a;
// ptr = &b;//这里就会报错,指针被修改
a = 7;//这里可以修改
//---------------------------------------------------------------
/*2)指针常量,指向常量的指针*/
const double pi = 3.14;
double p = 3.14;
double p1 = 2.35;
const double *ptr2 = π
double const *ptr3 = π//这里主要是看写法,从右向左结合即可,所以两种写法都正确
ptr2 = &p;//这里可以
ptr3 = &p;
p = 6.31;
//*ptr3 = 7.25;
//*ptr2 = 7.25;//报错.这里是指针常量的本质,不可以通过指针修改
//ptr2 = &p1;//这里也可以,指针常量的本质是不可以通过指针修改指向对象的值,但是没有规定不可以通过其他途径修改
ptr3 = &p1;
//---------------------------------------------------------------------
cout<<"ptr1="<<ptr1<<endl;
cout<<"&ptr1="<<&ptr1<<endl;
cout<<"*ptr1="<<*ptr1<<endl;
cout<<"ptr2="<<ptr2<<endl;
cout<<"&ptr2="<<&ptr2<<endl;
cout<<"*ptr2="<<*ptr2<<endl;
cout<<"ptr3="<<ptr3<<endl;
cout<<"&ptr3="<<&ptr3<<endl;
cout<<"*ptr3="<<*ptr3<<endl;
return 0;
}