2013-02-03 66 views
0

我有一個函數會傳遞一個void指針。這個指針可以是int,char或float。我知道哪些數據類型將通過關聯值傳遞給我。例如,下面是我的職責是什麼樣子:查找char指針結尾,int和float

void * (int type, void * data); 

如果我通過了空指針原是一個char類型,我將它轉換回char類型,有沒有確定多少字節的方式與那個指針相關聯?例如,如果我的函數被調用如下:

f(1, (void *)"Hello world"); 

,我投了空指針回到一個字符指針

char * p = (char *)data; 

有一些方法可以讓我弄清楚了多少字節使用?我可能需要搜索空字符並計算它離原始指針有多少字節?我還需要做些什麼才能找到int和float的大小呢?

+0

你需要一個3r參數,或者爲int和float記錄一個終結符值 – qPCR4vir

回答

2

我可能需要搜索空字符並計算它離原始指針很多字節嗎?

是的,如果你的void*實際上是char*這將工作。

我需要做些什麼才能找到int和float的大小呢?

intfloat一如既往相同的大小(這取決於從您的架構,通常32或64位。使用sizeof操作者以確定確切的大小)。如果你傳遞一個int數組作爲void*你沒有辦法找到它的長度。

通常在這些情況下,它也很容易將大小傳遞給你的函數。

+0

啊,我完全忽略了int和float是特定大小的事實...如果我可以發送這個大小的話,寧願做我現在正在做的事情。哈。謝謝。 – kubiej21

+0

「int和float始終是相同的大小」不! int可以是16bit,float不小於32(所有intel 16系統) –