MST

星途 面试题库

面试题:C++中const char *p与char * const p区别应用

请编写一段C++代码,分别使用const char *p和char * const p,并展示它们在实际应用中的行为差异。要求代码包含至少两个函数,一个函数接收const char *类型参数,另一个函数接收char * const类型参数,并在函数中对参数进行合适的操作以体现其特性。
16.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

// 函数接收const char *类型参数
void operateOnConstCharPtr(const char *p) {
    // 可以读取p指向的内容,但不能修改它
    std::cout << "From operateOnConstCharPtr: " << p << std::endl;
    // p = "new string"; // 这是合法的,因为p本身不是const
}

// 函数接收char * const类型参数
void operateOnCharPtrConst(char * const p) {
    // 可以修改p指向的内容
    *p = 'A';
    std::cout << "From operateOnCharPtrConst: " << p << std::endl;
    // p = "new string"; // 这是不合法的,因为p是const
}

int main() {
    const char *constCharPtr = "Hello, World!";
    char nonConstChar[] = "Hello, World!";
    char *charPtrConst = nonConstChar;

    operateOnConstCharPtr(constCharPtr);
    operateOnCharPtrConst(charPtrConst);

    return 0;
}
  1. const char *p
    • p是一个指向const char的指针。
    • 可以修改p,使其指向其他字符串。
    • 不能通过p修改所指向的字符串内容。
  2. char * const p
    • p是一个const指针,它一旦初始化,就不能再指向其他地址。
    • 但可以通过p修改所指向的字符串内容。