随笔 - 272  文章 - 0  评论 - 283  阅读 - 142万

结构体初始化测试

最近在看Asterisk的源代码,收获不小,决定记录下来学习Asterisk过程中的点滴,分享给大家,也方便我以后查阅……

今天让我感到意外的是Asterisk中对结构体初始化(或者说成是赋值)的使用。

比如定义结构体如下:

typedef struct ST {
int a;
int b;
pFun fun;
}ST;

一般的初始化是这样的:

ST t2;
t2.a=4;
t2.b=5;
t2.fun=test2;

而我在源码中看到的是这样的:

ST t1 = {.a=1,.b=2,.fun=test1};

感觉好强大。。。。。。

这里是我仿照着写的完整代码:

复制代码
 1 #include <stdio.h>
 2 
 3 typedef void (*pFun)(int a);
 4 
 5 typedef struct ST {
 6     int a;
 7     int b;
 8     pFun fun;
 9 }ST;
10 
11 void test1(int a)
12 {
13     printf("test1 : %d\r\n",a);
14 }
15 
16 void test2(int a)
17 {
18     printf("test2 : %d\r\n",a);
19 }
20 
21 int main()
22 {
23     ST t1 = {
24     .a=1,
25     .b=2,
26     .fun=test1
27     };
28     
29     printf("%d\t%d\n",t1.a,t1.b);
30     t1.fun(3);
31     
32     ST t2;
33     t2.a=4;
34     t2.b=5;
35     t2.fun=test2;
36     
37     printf("%d\t%d\n",t2.a,t2.b);
38     t2.fun(6);
39     
40     return 0;
41 }
复制代码

这里存盘为test20120608.c,进行如下操作:

make test20120608 && ./test20120608

测试结果:

posted on   Mike_Zhang  阅读(649)  评论(2编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2012年6月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

点击右上角即可分享
微信分享提示