-
指针常量:指向常量的指针,也被称为底层const。这意味着你不能通过这个指针来改变它指向的对象的值,但是你可以改变指针本身的值(即它存储的地址)。例如,
const int *p1
是一个底层const。 -
常量指针:本身就是常量的指针,也被称为顶层const。这意味着你不能改变指针本身的值(即它存储的地址),但是你可以改变它指向的对象的值。例如,
int *const p2
是一个顶层const。#include<iostream> using std::cin; using std::cout; using std::endl; int main() { int a = 10; int b = 20; // 常量类型的指针 const int* p1 = &a; cout << "p1未改前的地址:" << p1 <<"---a地址" << endl; cout << "*p1所指的对象值:" << *p1 << endl;// 你不能通过*p1来修改它所指向的对象的值 //*p1 = 30; // 错误 但你可以改变p1的值 p1 = &b; // 正确 cout << "p1改后的地址:" << p1 <<"---a地址变成b地址----地址可改" << endl; cout << "*p1所指的对象值:" << *p1 << endl; // 常量指针 int* const p2 = &a;//P2将一直指向A地址 cout << "p2的地址:" << p2 << "---a地址" << endl; // 你不能改变p2的值 cout << "*p2指针所指的对象值:" << *p2 << endl; // 但你可以通过*p2来修改它所指向的对象的值 // p2 = &b; // 错误 *p2 = 30; // 正确 cout << "p2的地址:" << p2 <<"---a地址"<< endl; // 你不能改变p2的值 cout << "*p2指针所指的对象值:" << *p2 << "---指针指向的对象可改" << endl; return 0; }