#include "stdafx.h"
#include <stdio.h>
#include <winsock.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
// TODO: Place code her
char buf[256]="pc2"; char chr[256];
WSADATA data;
hostent* host; WSAStartup(0x101,&data);
gethostname(chr,sizeof(chr)); host=gethostbyname(buf);
sockaddr_in sa;
for (int nAdapter=0; host->h_addr_list[nAdapter]; nAdapter++)
memcpy ( &sa.sin_addr.s_addr, host->h_addr_list[nAdapter],host->h_length);
return 0;
}
//////////////////////////////file end////////////
hostent 结构如下
struct hostent {
char FAR * h_name; /* 正式的主机名*/
char FAR * FAR * h_aliases; /* 别名列表*/
short h_addrtype; /* 主机地址类型*/
short h_length; /* 地址长度*/
char FAR * FAR * h_addr_list; /* 地址清单*/
};
在上面的for语句中有如这样一条指令host->h_addr_list[nAdapter]
而host->h_addr_list就是hostent结构中的h_addr_list是一个二级指针。
请问各位!这条指令对二级指针进加运算后!这个指针会指向哪个地址???
假设!!
host->h_addr_list[0]->0x00780da0
host->h_addr_list[1]->?????????????
#include <stdio.h>
#include <winsock.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
// TODO: Place code her
char buf[256]="pc2"; char chr[256];
WSADATA data;
hostent* host; WSAStartup(0x101,&data);
gethostname(chr,sizeof(chr)); host=gethostbyname(buf);
sockaddr_in sa;
for (int nAdapter=0; host->h_addr_list[nAdapter]; nAdapter++)
memcpy ( &sa.sin_addr.s_addr, host->h_addr_list[nAdapter],host->h_length);
return 0;
}
//////////////////////////////file end////////////
hostent 结构如下
struct hostent {
char FAR * h_name; /* 正式的主机名*/
char FAR * FAR * h_aliases; /* 别名列表*/
short h_addrtype; /* 主机地址类型*/
short h_length; /* 地址长度*/
char FAR * FAR * h_addr_list; /* 地址清单*/
};
在上面的for语句中有如这样一条指令host->h_addr_list[nAdapter]
而host->h_addr_list就是hostent结构中的h_addr_list是一个二级指针。
请问各位!这条指令对二级指针进加运算后!这个指针会指向哪个地址???
假设!!
host->h_addr_list[0]->0x00780da0
host->h_addr_list[1]->?????????????
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货