在非常简单的代码上从'char'无效转换为'char *'?

时间:2016-02-07 16:42:27

标签: c++ pointers char

#include <iostream>

int main(){
    char* x=    'x';
    return 0;
}

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

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

是否有可能指针指向一个包含单个字符文字的地址?我甚至问这个问题对吗?

4 个答案:

答案 0 :(得分:2)

  

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

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

  

是否有可能指针指向一个包含单个字符文字的地址?

不,C ++不允许获取右值的地址(但有些编译器可能会将其作为&#34;扩展名&#34;)。但是你可以获取char左值的地址。例如,

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

我甚至问这个问题对吗?

没有

答案 1 :(得分:1)

除非你在某处存储'x',否则你不能把它的地址分配给char *指针。

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

这将是解决方案。

答案 2 :(得分:1)

你的声明说变量(x)是指向char的指针。指针是对内存位置的引用。然后你试图分配一个角色&#39; x&#39;到指针变量。编译器抱怨你正试图分配两个不同的东西。就像老太太=青蛙一样,它没有意义。

你想要的更有可能的是:

char x = 'x';

其中说,将字符变量x指定为字面字母&#39; x&#39;的

答案 3 :(得分:-1)

你必须制作&#39; x&#39;变量首先。