#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值。