【发布时间】:2014-03-16 00:14:59
【问题描述】:
我有一个关于 NetBios NCB(网络控制块)的问题。我想知道如果结构没有任何指针,为什么我们可以使用这种语法,如下所示的示例。
UCHAR reset( NCB *block ) {
block->ncb_command = NCBRESET;
block->ncb_lana_num = 2;
block->ncb_lsn = 0;
block->ncb_num = 0;
Netbios(block);
return block->ncb_retcode;
}
int main()
{
NCB blok;
UCHAR err;
printf ( "reset:");
err = reset(&block);
if ( err != NRC_GOODRET ) {
printf ( "ERROR %x\n" , err ) ;
}
else {
printf ( "SUCCEED ! (%x)\n", err) ;
};
}
NCB的结构如下:
typedef struct _NCB {
UCHAR ncb_command;
UCHAR ncb_retcode;
UCHAR ncb_lsn;
UCHAR ncb_num;
PUCHAR ncb_buffer;
WORD ncb_length;
UCHAR ncb_callname[NCBNAMSZ];
UCHAR ncb_name[NCBNAMSZ];
UCHAR ncb_rto;
UCHAR ncb_sto;
void (CALLBACK *ncb_post)( struct *NCB);
UCHAR ncb_lana_num;
UCHAR ncb_cmd_cplt;
UCHAR ncb_reserve[X];
HANDLE ncb_event;
} NCB, *PNCB;
对不起我的英语。
【问题讨论】:
-
看起来像微软类型。强烈提示:像瘟疫一样避免它。
-
你到底在说哪种语法?
-
我说的是重置功能。为什么我们必须使用“->”以及为什么我们不在主函数中创建任何指针然后不使用分配?只是只有NCB块; ?
-
“不创建任何指针” - 呃,你知道
&block做了什么,对吧? -
是的,我知道它包含地址
标签: c pointers structure netbios ncb