2012-05-21 76 views
2

我有以下結構:指針在一個結構一功能

struct A { 
    struct list * (* get_items) (void); 
    char * (*build) (void); 
} 

現在的方式build被分配(這是一個指向函數)如下:

struct A someVar = { 
    .build = someBuildingFunction 
}; 

我我不確定如何分配build的語法。它爲什麼從一個點開始?此外,如何將get_items指向struct A someVar的相應功能?我嘗試了幾種方法,並不斷收到錯誤。

我還注意到在somebuildingFunction末尾缺少分號。這是爲什麼?

回答

5

爲什麼它以點開頭?

它被稱爲指定初始值設定項。

如何將get_items指向struct A someVar中的相應函數?

struct A someVar = { 
    .build = someBuildingFunction, 
    .get_items = someGettingFunction 
}; 

你可以省略成員的名字,只是確保你把函數名以正確的順序。

我也注意到在某些函數的結尾處沒有分號。這是爲什麼?

這是常見的初始化中C.例如:

int x[] = { 
    1 /* No semicolon after 1. */ 
};