C语言的博大精深之数组和结构体的赋值操作

来源:本站
导读:目前正在解读《C语言的博大精深之数组和结构体的赋值操作》的相关信息,《C语言的博大精深之数组和结构体的赋值操作》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C语言的博大精深之数组和结构体的赋值操作》的详细说明。
简介:最近在看关于队列调度的内核实现代码时,发现奇怪的赋值语句,写此文章记录下。

第一话,先谈谈数组赋值吧。

恩,在C语言中数组赋值和结构体赋值很简单,就是使用=,memcpy操作嘛.

但最近在看关于队列调度的内核实现代码时,发现如下奇怪的赋值语句。

#defineRTM_MAX(RTM_BASE+47)

#defineRTM_GETLINK(RTM_BASE+2)

structrtnetlink_link

{

int(*doit)(structsk_buff*,structnlmsghdr*,void*attr);

int(*dumpit)(structsk_buff*,structnetlink_callback*cb);

};

staticstructrtnetlink_link link_rtnetlink_table[RTM_MAX-RTM_BASE+1]=

//RTM_MAX-RTM_BASE+1=48

{

[RTM_GETLINK-RTM_BASE]={.dumpit=rtnetlink_dump_ifinfo},

[RTM_SETLINK-RTM_BASE]={.doit=do_setlink},

[RTM_GETADDR-RTM_BASE]={.dumpit=rtnetlink_dump_all},

[RTM_GETROUTE-RTM_BASE]={.dumpit=rtnetlink_dump_all},

[RTM_NEWNEIGH-RTM_BASE]={.doit=neigh_add},

[RTM_DELNEIGH-RTM_BASE]={.doit=neigh_delete},

[RTM_GETNEIGH-RTM_BASE]={.dumpit=neigh_dump_info}

};

上面这段赋值语句第一次见到。

看了N久后,我才明白这个赋值语句的含义,原来C语言还可以这样赋值哦

说明:上面这段赋值语句有两个需要注意的地方。

1、[RTM_GETLINK - RTM_BASE] = { .dumpit = rtnetlink_dump_ifinfo }, 这条说明C语言在数组赋值时,可以专门对第几个元素进行赋值。此例中等于[2]={...},即对第二个元素赋值。

2、{ .dumpit = rtnetlink_dump_ifinfo },说明,在结构体赋值中,也可以对某个特定的结构体成员进行单独的赋值。

提醒:《C语言的博大精深之数组和结构体的赋值操作》最后刷新时间 2024-03-14 00:54:42,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C语言的博大精深之数组和结构体的赋值操作》该内容的真实性请自行鉴别。