招聘阀门采购工程师:关于C语言指针定义的问题

来源:百度文库 编辑:中科新闻网 时间:2024/05/07 16:19:38
刚刚我问了一个问题 也有了答案
typedef struct arphdr /*定义一个arp头的结构体*/
{
unsigned short arp_hdr;
unsigned short arp_pro;
unsigned char arp_hln;
unsigned char arp_pln;
unsigned short arp_opt;
unsigned char arp_sha[MAC_ADDR_LEN];
unsigned long arp_spa;
unsigned char arp_tha[MAC_ADDR_LEN];
unsigned long arp_tpa;
} ARP_t, *pARP_t;
根据关键词typedef的用法,以后可以用ARP_t定义结构体变量,这个我知道 但是后面这个*pARP_t代表什么呢?

他的答案是:*pARP_t是一个指向arphdr类型变量的指针。
根据它p ARP_T推测point ARP_T为指向pARR_t的指针
它赋值时与ARP_T完全相同 只是为了以后方便用才多此一举。

回答应该是对的吧,但是我觉得不符合指针定义[类型名 *指针名] 这里定义指针时中间加了一个“,”是ARP_t, *pARP_t; 也就是说[类型名,*指针名] 能这样定义指针吗? 请回答中不要只是yes or no 说下reason
谢了

如楼上所说你对typedef理解还不够

typedef struct xx
就是定义了一个名为xx的数据类型,如int char一样

如有 xx *a
xx被储存在一块内存区域 *a 就成了一个指向这块区域的指针变量

注意这是typedef,所以你说的[类型名,*指针名]是错误的,
实际上ARP_t,*pARP_t都是类型名的定义。
在使用的时候就这样定义了:pARP_t varPtr;
这样还是: 类型 变量;
是符合指针定义的,varPtr实际上就是一个指针变量了。
只是你对typedef的理解还不够透彻。。。