2012-01-30 192 views

回答

1

這意味着將x轉換爲指向char(或指向一般指針)的指針。

3

這是一個演員。您正在指示編譯器將x視爲char *,而不考慮其實際類型。只有在你確實知道自己在做什麼的情況下才能使用演員。

對於一些內置類型,編譯器可以執行有意義的轉換,例如,通過四捨五入將double轉換爲int,但對於其他類型,您可能得不到預期的結果。

+3

這不僅僅是治療。 (char *)x'的值可能與'x'的值不同(即使x是指針) – asaelr 2012-01-30 21:49:11

+0

投射指針不會修改該值。所以它不會轉換任何東西。請驗證您的答案並相應地更改它,您在此提供錯誤信息。 – 2012-01-30 21:55:24

+0

如果我沒有弄錯,標準中沒有任何內容承諾。 – asaelr 2012-01-30 22:02:53

1

()是演員。

(char *) x表示「將演員操作符應用於操作數x」。

轉換操作符將操作數的值轉換爲()之間的類型。

0

類型轉換爲字符指針。

0

其實char *x是一個聲明。 x是指向char的指針。

如果您已經有一個變量,如x,則可以將其轉換爲其他類型。在你的情況下,(char*) x是多餘的,因爲x已經是一個指向char的指針。但是你可以將它投射到int *或其他東西。雖然,請注意,這是不安全的,因爲int大於char。

-2

聲明的變量稱爲char類型的 「×」:

char x; 

聲明一個稱爲 「X」 可變的,其是指向一個char:

char *x; 

的東西鑄造那不是char類型的字符:

int x = 10; 
char y = (char)x; 
+5

你提到了他沒有問的三個問題,但沒有提到他所做的一個問題。 – 2012-01-30 21:52:30

0

表達式(char *)x是一種類型轉換爲wh ich返回x的值,轉換爲char *

根據操作數和目標類型,轉換的結果可能會有很大的不同:例如,您可以使用轉換將浮點值四捨五入到整數精度,擺脫像const這樣的限定符,將指針轉換爲整數用於高級地址計算,如對齊檢查和其他許多事情。

但是,並非所有可能的轉換都會導致合法值 - 例如,投射指針可能會違反別名和對齊規則。

在執行基於字節的指針算術時,將(有效的)非函數指針轉換爲char *始終是合法且有用的。

相關問題