#include <iostream>
int main(){
char* x= 'x';
return 0;
}
为什么这个简单的代码会出现此错误?
error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
char* x= 'x';
是否有可能指针指向一个包含单个字符文字的地址?我甚至问这个问题对吗?
答案 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;变量首先。