MST

星途 面试题库

面试题:C++ 中常指针与指向常变量指针的基础差异

请分别阐述 C++ 中常指针(const pointer)和指向常变量指针(pointer to const variable)的定义方式,并通过代码示例展示两者在使用上有哪些不同之处。
20.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 常指针(const pointer)
    • 定义方式:指针本身是常量,即指针的地址不能改变,但是指针所指向的值可以改变。定义形式为 type * const pointer_name = &variable;,其中 type 是指针所指向变量的类型,pointer_name 是指针名,variable 是同类型的变量。
    • 代码示例
#include <iostream>
int main() {
    int num1 = 10;
    int num2 = 20;
    int * const ptr = &num1;
    *ptr = 15; // 合法,可改变指针所指向的值
    // ptr = &num2; // 非法,常指针的地址不能改变
    std::cout << "Value of num1 through ptr: " << *ptr << std::endl;
    return 0;
}
  1. 指向常变量指针(pointer to const variable)
    • 定义方式:指针指向的是常量,即不能通过该指针改变所指向的值,但是指针本身的地址可以改变。定义形式为 const type * pointer_name = &variable; 或者 type const * pointer_name = &variable;,其中 type 是指针所指向变量的类型,pointer_name 是指针名,variable 是同类型的变量。
    • 代码示例
#include <iostream>
int main() {
    int num1 = 10;
    int num2 = 20;
    const int * ptr = &num1;
    // *ptr = 15; // 非法,不能通过指向常变量的指针改变所指向的值
    ptr = &num2; // 合法,指针本身的地址可以改变
    std::cout << "Value of num2 through ptr: " << *ptr << std::endl;
    return 0;
}

两者使用不同之处总结

  • 常指针重点在指针本身是常量,其地址不可变,而指向的值可变。
  • 指向常变量指针重点在指针指向的是常量,通过该指针不能改变所指向的值,但指针本身地址可变。