#include <iostream>
int main(){
char* x= 'x';
return 0;
}
为什么这个简单的代码会给出这个错误?非常简单的代码无效地从'char'转换为'char *'?
error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
char* x= 'x';
是否有可能有一个指针指向一个地址持有单个字符文字?我甚至问这个问题吗?
#include <iostream>
int main(){
char* x= 'x';
return 0;
}
为什么这个简单的代码会给出这个错误?非常简单的代码无效地从'char'转换为'char *'?
error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
char* x= 'x';
是否有可能有一个指针指向一个地址持有单个字符文字?我甚至问这个问题吗?
您必须首先将'x'作为变量。
除非在某处存储'x',否则不能将其地址存储并将其分配给char *指针。
char _x = 'x';
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值。