指针常量:其本质是指针本身是一个常量,即指针所指地址不可修改,但是其所指地址的内容可以修改,同时在定义指针变量时必须初始化。
int * const t = &x; //const修饰指针常量形式
常量指针:其本质指针,指针所指向的内容不可修改,但是指针的值可以修改。
const int * p = &a; //const修饰常量指针形式
下面通过程序体现:
#include <iostream>
using namespace std;
int main ()
{
cout << "指针常量:" << endl;
int x = 10, y = 30;
int * const t = &x; //指针常量,指针本身是一个常量,即指针指向的地址不可修改,但是其指向的内容可以修改
cout << t << endl;
cout << &x << endl;
cout << &y << endl;
cout << *t << endl;
*t = 30; // 修改指针所指向的内容的值
cout << t << endl;
cout << &x << endl;
cout << &y << endl;
cout << *t << endl;
cout << "x = " << x << " y = " << y <<endl;
cout <<endl;
cout << "常量指针:" << endl;
int a = 10, b = 30;
const int * p = &a; //常量指针,指向的内容不变,指针可修改
cout << p << endl;
cout << &a << endl;
cout << &b << endl;
cout << *p << endl;
p = &b; //修改指针地址
cout << p << endl;
cout << &a << endl;
cout << &b << endl;
cout << *p << endl;
cout << "a = " << a << " b = " << b <<endl;
return 0;
}
运行结果为:
指针常量:
0x61fe0c
0x61fe0c
0x61fe08
10
0x61fe0c
0x61fe0c
0x61fe08
30
x = 30 y = 30
常量指针:
0x61fe04
0x61fe04
0x61fe00
10
0x61fe00
0x61fe04
0x61fe00
30
a = 10 b = 30