struct 初始化筆記
最近在看kernel的code, 裡面常有個好用的struct初始化方式,
可以只設定自己需要的值,相當彈性。
範例如下:建立一個 struct std,在main中初始化,再利用指標函數呼叫showme,把值印出來。
(這簡單例子不考慮buffer overflow問題)
struct std{
int number;
char name[128];
int (*get)(struct std *p);
};
void showme(struct std *p)
{
printf("My number is:%d name:%s \n",p->number,p->name);
}
int main()
{
struct std mystd={
.number = 39,
.name = "LuLu",
.get = &showme,
}; //* equals struct std mystd={39,"lulu",&showme};
(*mystd.get)(&mystd); //*call showme function with mystd parameter
}
執行結果:
My number is:39 name:LuLu
可以只設定自己需要的值,相當彈性。
範例如下:建立一個 struct std,在main中初始化,再利用指標函數呼叫showme,把值印出來。
(這簡單例子不考慮buffer overflow問題)
struct std{
int number;
char name[128];
int (*get)(struct std *p);
};
void showme(struct std *p)
{
printf("My number is:%d name:%s \n",p->number,p->name);
}
int main()
{
struct std mystd={
.number = 39,
.name = "LuLu",
.get = &showme,
}; //* equals struct std mystd={39,"lulu",&showme};
(*mystd.get)(&mystd); //*call showme function with mystd parameter
}
執行結果:
My number is:39 name:LuLu
留言