📜  常量指针,指向常量的指针和指向常量的常量指针之间的区别(1)

📅  最后修改于: 2023-12-03 15:39:27.358000             🧑  作者: Mango

常量指针,指向常量的指针和指向常量的常量指针之间的区别

在 C/C++ 中,有三种不同类型的指针:常量指针,指向常量的指针和指向常量的常量指针。这些指针之间的区别可能会引起程序员的困惑。本文将介绍这三种指针的区别。

常量指针

常量指针是指向一个常量对象的指针,指针本身可以被修改,但是它指向的值不能被修改。

const int num = 5;
const int *p1 = # // p1 是常量指针
*p1 = 6; // 错误,不能通过常量指针修改值
int *p2 = # // 错误,不能用普通指针指向常量
指向常量的指针

指向常量的指针是指向一个常量对象的指针,指针本身不能被修改,但是它指向的值可以被修改。

const int num = 5;
int *const p1 = # // p1 是指向常量的指针
*p1 = 6; // 正确,可以通过指针修改值
int *p2 = # // 错误,不能用普通指针指向常量
指向常量的常量指针

指向常量的常量指针是指向一个常量对象的常量指针,指针本身不能被修改,它指向的值也不能被修改。

const int num = 5;
const int *const p1 = # // p1 是指向常量的常量指针
*p1 = 6; // 错误,不能通过指针修改值
int *p2 = # // 错误,不能用普通指针指向常量
总结

常量指针、指向常量的指针和指向常量的常量指针在指针本身和所指向的值的可读性和可写性方面有所不同。程序员需要根据具体的需求选择合适的指针类型。