2 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
函數(shù)返回值是無類型指針(void *)
函數(shù)名本身代表的是函數(shù)的入口指針,強(qiáng)制轉(zhuǎn)成void * 型后返回。

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
查看內(nèi)核里面netlink_kernel_create函數(shù)的定義include/linux/netlink.h
extern struct sock *netlink_kernel_create(struct net *net,
int unit,unsigned int groups,
void (*input)(struct sk_buff *skb),
struct mutex *cb_mutex,
struct module *module);
該返回值是一個(gè)struct sock的結(jié)構(gòu)體指針,在上面的函數(shù)中,將sock結(jié)構(gòu)體指針強(qiáng)制轉(zhuǎn)化為void的無類型指針,就是說它只表示這個(gè)結(jié)構(gòu)體的起始地址。
如果要在代碼里使用該void型指針,需要再對(duì)其進(jìn)行強(qiáng)制轉(zhuǎn)換成其他結(jié)構(gòu)體指針類型,才能通過結(jié)構(gòu)體成員進(jìn)行值訪問和修改,其實(shí)這個(gè)轉(zhuǎn)化為其他結(jié)構(gòu)體指針的過程,只是為了計(jì)算起始地址后面的偏移方便而已
添加回答
舉報(bào)