我一直认为我不应该在循环内定义变量,因为它是不必要的或浪费的。这让我想知道以下 recv() 函数是否需要为循环的每次迭代提供一个新的缓冲区:
while (totalBytesRecvd < echoStrLen)
{
char buffer[BUFSIZE];
numBytes = recv(sock, buffer, BUFSIZE - 1, 0);
...
totalBytesRecvd += numBytes;
buffer[numBytes] = '\0';
fputs(buffer, stdout);
}
recv() 的文档没有提到它如何使用缓冲区指针。为了更好地理解,我尝试在循环之前定义缓冲区,并且 recv() 似乎覆盖了缓冲区,而不是重新定义它。这是有道理的,因为 recv() 传递了一个指向缓冲区开头的指针。
是否有特定的原因在循环内一遍又一遍地定义缓冲区?还是我对此的基本理解正确?