MST

星途 面试题库

面试题:C++中const char *p与char * const p类型转换的基础应用

已知有函数void func(const char *str),现有一个char * const ptr指向了一段字符数组。请编写代码,在保证不丢失ptr指向内容的情况下,将ptr作为参数传递给func函数,如果无法直接传递,需要说明原因并给出可行的解决方案。
37.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

因为func函数的参数是const char *,而ptrchar * constchar * const 不能隐式转换为 const char *,这是由于这种转换可能会导致丢弃底层 const 限定符,从而允许对原本希望为常量的数据进行修改。

可行的解决方案是使用一个临时的 const char * 指针来指向 ptr 所指向的内容,然后将这个临时指针传递给 func 函数。代码如下:

#include <stdio.h>

void func(const char *str) {
    printf("%s\n", str);
}

int main() {
    char arr[] = "Hello, World!";
    char * const ptr = arr;
    const char *temp = ptr;
    func(temp);
    return 0;
}