2016-02-07 85 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值。

相關問題