這確實有效:
char blockSize[4];
int r = recv(socket, blockSize, 4, 0);
這不起作用。它總是回傳零,為什么?
size_t blockSize = 0;
int r = recv(socket, (char*)blockSize, 4, 0);
這不是主要問題,我知道如何將 char 陣列轉換回 size_t。但我只想知道為什么它不起作用。
uj5u.com熱心網友回復:
在該第一示例中,要傳遞的地址的blockSize(通過陣列衰減)來recv()。
在該第二示例中,要傳遞的值的blockSize到recv()的,型別鑄造用作指標。由于blockSize是 0,指標實際上是nullptr。你需要通過地址的blockSize來代替。此外,size_t不能保證為 4 個位元組,因此請(u)int32_t改用,例如:
uint32_t blockSize = 0;
int r = recv(socket, (char*)&blockSize, 4, 0);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/342870.html
上一篇:我可以參考C 中的指標嗎?
