MST

星途 面试题库

面试题:C++ 常指针与指针常量混淆点 - 基础应用

请写出一个函数,该函数接收一个指向整数的指针常量作为参数,并在函数内尝试修改指针所指向的值,同时解释这样做是否合法以及原因。
36.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 函数定义,接收指向整数的指针常量
void modifyValue(int * const ptr) {
    // 修改指针所指向的值
    *ptr = 42;
}

int main() {
    int num = 10;
    int * const ptr = &num;
    modifyValue(ptr);
    printf("修改后的值: %d\n", num);
    return 0;
}

这样做是合法的。原因是指针常量意味着指针本身的值(即所指向的内存地址)不能被修改,但指针所指向的内存中的值是可以修改的。在C语言中,int * const ptr 声明了一个指针常量 ptr,它必须在声明时初始化,且之后不能再指向其他地址,但通过 *ptr 对其所指向的值进行修改是允许的。