MST

星途 面试题库

面试题:C++ 中常指针与指向常变量的指针区别之基础应用

请写出一段 C++ 代码,分别定义一个常指针和一个指向常变量的指针,并在代码中对它们进行合理的使用和注释,解释其特性及区别。
18.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int main() {
    // 定义一个普通变量
    int num = 10;

    // 常指针:指针本身的值(即所指向的地址)不可改变,但可以通过指针修改所指向的值
    int* const ptr1 = &num; 
    // 这里ptr1指向num后,就不能再指向其他变量,例如 ptr1 = &anotherNum; 这样的赋值是不允许的
    *ptr1 = 20; // 但可以通过ptr1修改num的值,现在num变为20

    // 指向常变量的指针:指针本身的值(即所指向的地址)可以改变,但不能通过指针修改所指向的值
    const int* ptr2 = &num; 
    // ptr2可以指向其他常量或变量,例如 int anotherNum = 30; ptr2 = &anotherNum;
    // *ptr2 = 30; 这样的操作是不允许的,因为ptr2指向的是常量,不能通过它修改值

    std::cout << "num的值: " << num << std::endl;
    return 0;
}

常指针的特性:

  • 指针本身是常量,一旦初始化指向某个地址,就不能再改变其指向。
  • 可以通过常指针修改所指向的变量的值。

指向常变量的指针特性:

  • 指针本身不是常量,可以指向其他地址。
  • 不能通过该指针修改所指向的变量的值,即使该变量本身不是常量(如果是常量则更不能修改)。

两者的区别:主要在于指针本身是否可变(常指针不可变),以及能否通过指针修改所指向的值(指向常变量的指针不能修改)。