在非常简单的代码上从“char”到“char*”的转换无效

invalid conversion from ‘char’ to ‘char*’ on very simple code?

本文关键字:char 无效 转换 非常 简单 代码      更新时间:2023-10-16
#include <iostream>
int main(){
    char* x=    'x';
    return 0;
}

为什么这个简单的代码会给出这个错误?

error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
  char* x= 'x';

是否可以让指针指向包含单个字符文本的地址?我问这个问题对吗?

为什么这个简单的代码会给出这个错误?

因为C++不允许从char转换为char*.这就是神秘错误消息的含义。

是否可以让指针指向包含单个字符文本的地址?

不,C++不允许采用右值的地址(但某些编译器可能会将其作为"扩展"提供)。但是您可以获取char左值的地址。例如

char x = 'x';
char* p = &x; // pointer to a single char. NOT a null terminated string.

我问这个问题对吗?

不。

您的声明说变量 (x) 是指向字符的指针。 指针是对内存位置的引用。 然后,您尝试将字符"x"分配给指针变量。 编译器抱怨您正在尝试分配两个不同的东西。 就像老妇人=青蛙一样,这没有意义。

您更可能想要的是以下几级的东西:

char x = 'x';

也就是说,为字符变量 x 分配文字字母"x"的 ascii 值。

除非你将"x"存储在某个地方,否则你不能获取它的地址并将其分配给 char* 指针。

char _x = 'x';
char* x = &_x;

这将是解决方案。

你必须先让'x'成为一个变量。