一个c++常量,因为其值不可更改,因此,导致他的指针的*p也是不可更改的。
这个const必然是修饰*的而非指针变量名。
这是因为一旦对这个常量取值,必然面对不可更改的问题,比如
const double Pi = 3.1416;
*&Pi=31.416;//必然不可以让他操作成功
因此这个常量的指针,必须有这样的限制,否则如果进行*p操作岂不是要导致程序错误:
double const * myPi = Π
当然更多的限制是可以的,但是更少的限制是不可以的:
double const * const myPi = Π//可以
double * myPi = &Pi//不可以,编译不能通过
代码:
#include <iostream>
using namespace std;
// void CalcArea(const double * const pPi,//pi指针值和地址都不能改变
// const double * const pRadius,//半径指针值和地址都不能改变
// double * const pArea)//面积指针值可以改变地址不能改变
// {
// if (pPi && pRadius && pArea)
// {
// *pArea = (*pPi) * (*pRadius) * (*pRadius);
// }
// }
void CalcArea(double const * pPi,double * pRadius,double * pArea)
{
if (pPi && pRadius && pArea)
{
*pArea = (*pPi) * (*pRadius) * (*pRadius);
}
}
int main()
{
const double Pi = 3.1416;//因为这里是常量,所以他的指针的值不能改(而非指针变量)
cout << "Enter radius of circle: ";
double Radius = 0;
cin >> Radius;
double Area = 0;
CalcArea(&Pi, &Radius, &Area);
cout << "Area is = " << Area << endl;
return 0;
}