2

たとえば、大きな違いや良い/悪い習慣があるかどうかを知りたい

このようにする:

unsigned int length_addr; 
length_addr = sizeof(cli_addr);

nbytes = recvfrom(sockfd, buffer, sizeof(buffer), 0,
                  (struct sockaddr *)&cli_addr, &length_addr);

そしてこのように:

nbytes = recvfrom(sockfd, buffer, sizeof(buffer), 0,
                  (struct sockaddr *)&cli_addr, sizeof(cli_addr));
4

2 に答える 2

2

はい、大きな違いがあります。

  • unsigned int最初のケースでは、 基本的にのアドレスを渡していますinsigned int *

  • sizeof2 番目のケースでは、 type の operatorの結果を渡していますsize_t

それらは同じではありません。

とはいえ、マニュアルページによると、基本的にどちらも正しくありません。最後の引数は typesocklen_t *である必要があるため、正しい型に固執する必要があります。

于 2016-10-30T23:35:02.947 に答える