面试题答案
一键面试因为func
函数的参数是const char *
,而ptr
是char * const
,char * 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;
}