2014-11-24 47 views
0

我不熟悉C++和當前面臨的有關使用double類型的size_t計算的問題。 我提供了一部分源代碼如下。變量「storage」定義爲double,「pos」定義爲size_t類型。他們怎麼能一起計算?我查看「pos」的值,它顯示的值如0,1,2等等,而且,在double * result = storage + pos的情況下,顯示108 + 2得出結果x 117.C++ size_t和double類型的計算

此外,有時108 + 0出來的結果X爲零。什麼情況導致的結果?

如何計算之前知道的size_t的確切價值?

任何意見&建議表示讚賞。

double* getPosValue(size_t pos, IdentifierType *idRule, unsigned int *errorNumber, bool *found) 
{ 

    double * storage = *from other function with value 108* 

    double* result = storage + pos; 
    uint16_t* stat = status + pos; } 

回答

0

變異長度的大小

sizeof(variableNameOrTypeName) 

如果你是一個給定的數組元素如variableName[42]地址後,它只是:

&(variableName[42]) 

沒有明確瞎樂(或類型)可以與獲得與指針。

如果你想操縱實際的雙重當你只有一個指針時,你需要取消引用指針。例如:

double xyzzy = 108.0;  // this is the VALUE. 
double *pXyzzy = &xyzzy; // this is a POINTER to it. 

double plugh = *pXyzzy + 12.0; 

最後一行以上從指針(*pXyzzy)得到,並增加了12到的是,將其存儲到名爲plugh另一個變量之前。


你應該非常謹慎的事情,如:

double * storage = 108; 

,創建一個指針爲雙用108地址。它決不會創建一個具有值108的實際雙精度值。解除引用該指針可能導致,我們應該說,有趣結果:-)

+0

是的,這些不是創建double * storage = 108的方式;存儲的價值是由另一個功能給出的。抱歉的錯字(從函數返回的值是108.000000)。 – 2014-11-24 05:58:38

+0

感謝您的回覆。 int i = sizeof(pos)返回4,但它不是我喜歡的數據值。我想知道size_t中的數值,如108 + 12 = 120等數學計算。它返回108 + 4 = 117或108 + 2 = 0.你能幫我...謝謝。 – 2014-11-24 06:36:30

+0

感謝您的回覆。還有一個問題,我如何將size_t轉換爲像double * pos這樣的指針?謝謝你的建議。 – 2014-11-24 10:15:25