我在解除引用分配給指針的值時遇到問題。C/C++雙指針取消引用問題
考慮以下功能的正常工作:
void encode(int32_t *pInput, unsigned char **ppOutput)
{
**(int32_t **)ppOutput = *(int32_t*)pInput;
*ppOutput += sizeof(int32_t);
}
現在,當我嘗試去參考值,使用反向邏輯如下:
void decode(unsigned char **ppInput, int32_t *pOutput)
{
*(int32_t *)pOutput = **(int32_t**)ppInput;
*ppInput += sizeof(int32_t);
}
*(int32_t *)pOutput = **(int32_t**)ppInput;
然後
*(int32_t *)pOutput
包含垃圾,但如果更改邏輯,
*(int32_t *)pOutput = **ppInput;
然後
*(int32_t *)pOutput
包含正確的值。
請引導我在哪裏我錯過了線索。
我看到比天文館裏面的更多的恆星。不要在你的文章中使用星號來強調它,因爲它會讓代碼看起來更加困惑。 – PaulMcKenzie
在解除引用方面,我有點自信:**(int32_t **)ppInput'實際上應該是這樣的:'*(int32_t *)(* ppInput)'。在* real * [MCVE](https://stackoverflow.com/help/mcve)中查看* real *代碼將會清除這個問題。 – WhozCraig
你爲什麼要這樣做?別。 –