程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 結構體初始化測試

結構體初始化測試

編輯:關於C語言

最近在看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
測試結果:

 \





摘自 MikeZhang的博客

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved