const int*和int* const中的const修饰的对象不同,const int*修饰值,不能改变指针所指的值;int* const修饰指针,不能改变指针的地址。举个例子:
#include <iostream>
using namespace std;
///////////////////////////SubMain//////////////////////////////////
int main(int argc, char *argv[])
{
int n = 0;
int* p1 = &n;
const int* p2 = &n; // 底层const,可以改变指针地址,不能改变指针指向的值
int* const p3 = &n; // 顶层const,可以改变指针指向的值,不能改变指针地址
(*p1)++;
cout << n << endl;
// error C3892: “p2”: 不能给常量赋值
// (*p2)++;
// cout << n << endl;
(*p3)++;
cout << n << endl;
p1 = nullptr;
p2 = nullptr;
// error C3892: “p3”: 不能给常量赋值
// p3 = nullptr;
system("pause");
return EXIT_SUCCESS;
}
///////////////////////////End Sub//////////////////////////////////
/************************************************************************/
/*
1
2
请按任意键继续. . .
*/
/************************************************************************/
本文详细解析了C++中constint*与int*const的区别,通过具体示例展示了这两种指针类型如何限制对指针地址及值的操作,并提供了实际代码样例帮助理解。

被折叠的 条评论
为什么被折叠?



