乐闻世界logo
搜索文章和话题

const int*、const int*const和int const*之间有什么区别?

5 个月前提问
3 个月前修改
浏览次数43

1个答案

1

这三种指针的声明方式看似相似,但实际上它们各自的含义和用途有所不同。下面我将逐一解释这三种指针,并举例说明。

  1. const int* - 这种指针用于指向一个常量整数。这意味着通过这种指针不能修改其指向的内容,但是指针本身可以修改,即可以指向另一个常量整数。

    例子:

    cpp
    int a = 10; int b = 20; const int* ptr = &a; // ptr 指向 a,但不能通过 ptr 修改 a // *ptr = 11; // 错误:不能修改 ptr 指向的内容 ptr = &b; // 正确:可以改变 ptr 的指向
  2. const int const* - 这种指针是一个指向整数常量的常量指针。这里的第一个 const 修饰的是指针指向的整数(即指向的整数是常量),第二个 const 修饰的是指针本身(即指针本身也是常量)。这意味着既不能通过指针修改其指向的内容,也不能修改指针的指向。

    例子:

    cpp
    int c = 30; int d = 40; const int* const ptr2 = &c; // ptr2 是一个常量指针,指向整数常量 c // *ptr2 = 31; // 错误:不能修改 ptr2 指向的内容 // ptr2 = &d; // 错误:不能改变 ptr2 的指向
  3. int const* - 这种声明和 const int* 是等价的,都表示指针指向的整数内容是常量,即不能通过指针来修改其指向的内容,但指针自身可以指向其他地址。

    例子:

    cpp
    int e = 50; int f = 60; int const* ptr3 = &e; // 等同于 const int* // *ptr3 = 51; // 错误:不能通过 ptr3 修改 e ptr3 = &f; // 正确:可以改变 ptr3 的指向

总结来说,理解指针和 const 关键字的组合对于保护数据不被意外修改、优化程序性能和提增代码可读性来说是非常重要的。通过这些例子,我希望能清晰地展示了它们之间的区别和用途。

2024年7月5日 10:43 回复

你的答案