2016-02-07 58 views
-2
#include <iostream> 

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

为什么这个简单的代码会给出这个错误?非常简单的代码无效地从'char'转换为'char *'?

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

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

回答

-1

您必须首先将'x'作为变量。

1

除非在某处存储'x',否则不能将其地址存储并将其分配给char *指针。

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

这将是解决方案。

2

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

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

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

不,C++不允许采用右值的地址(但有些编译器可能会将其作为“扩展”提供)。但你可以采取一个char左值的地址。例如,

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

上午我甚至问这个问题吗?

1

你的声明说,该变量(x)是一个字符指针。指针是对内存位置的引用。然后你试图给一个指针变量赋一个字符'x'。编译器抱怨你正在尝试分配两个不同的东西。就像老女人=青蛙一样,它没有任何意义。

更重要的是可能是你想要的东西是顺序的东西:

char x = 'x'; 

它说,指定字符变量x的文字字母“X”的ASCII值。

相关问题