我使用一个程序从收到的数据包中提取源地址。但我不明白 & 运算符在以下代码中的用法:
==> 函数转换地址
struct in_addr {
unsigned long int s_addr; }
char *inet_ntoa(struct in_addr in);
==> 接收数据包
recvfrom(sockfd, buffer, sizeof(struct iphdr) + sizeof(struct icmphdr), 0, (struct sockaddr *)&connection, &addrlen)) == -1)
===> 显示源地址
struct iphdr* ip_reply;
/*code */
ip_reply = (struct iphdr*) buffer;
/*code */
printf("RCV ip->daddr = %s \n",inet_ntoa(*((struct in_addr *)&ip_reply->saddr)));
为什么我必须使用&
in &ip_reply->saddr
?