2013-06-05 54 views
1

我在想,如果鑄造這裏是最好的解決辦法:在這裏鑄造最好的解決方案嗎?

這是函數原型:

void function(unsigned char * data) 

這是我打算如何使用它(nSize從讀):

unsigned int nSize = 15; 

function((unsigned char*) &nSize); 
+5

由於問題中的(非常有限)信息,答案只能是:是的,您需要投射。更大的問題是*爲什麼*你需要將一個指向一個整數的指針傳遞給一個指向一個字符的函數? –

+3

使用這種不兼容指針的動機是什麼? –

+1

您還可以將函數定義爲函數(void * data),並在其中定義類型。順便說一句你期待的結果是什麼? – aisbaa

回答

1

假設函數原型設置爲石頭和nSize必須是一個int,是的,這看起來是正確的。

1

是的,就你而言,演員似乎是必要的。

請注意,使用C++風格的命名轉換優於C風格轉換。在你的情況下,reinterpret_cast是正確的選擇。請注意,這是一種危險行爲,詳情請參閱here

function(reinterpret_cast<unsigned char*>&nSize); 
相關問題