C99標準的結構體賦值註解
阿新 • • 發佈:2019-02-15
關於結構體的賦值問題
#include <stdio.h> static struct id_mesg{ char *name; unsigned int age; char *job; }; static struct id_mesg persons[] = { {"bimax", 23, "hero"}, {"deadpool", 34, "marvel"}, {"thor", 65535, "god"}, {.name = "linus", .job = "linuxman"} }; static struct id_mesg per_one = { .name = "gates", .age = 43, .job = "ITman", }; int main(int argc, char **argv) { int i; for(i = 0; i < 4; i ++) { printf("name: %s\t age: %d\t job: %s\n", persons[i].name, persons[i].age, persons[i].job); } printf("name: %s\t age: %d\t job: %s\n", per_one.name, per_one.age, per_one.job); }
程式如上所示。
static struct id_mesg persons[] = {
{"bimax", 23, "hero"},
{"deadpool", 34, "marvel"},
{"thor", 65535, "god"},
{.name = "linus", .job = "linuxman"}
};
該段的前三個為結構體賦值常用方法,最後一個是來自C99標準,表示指定初始化,使用字首.加變數名稱進行定向賦值如上所示,分別對name賦值為字串“linus”,job賦值為字串“linuxman”,可以空下age不進行賦值這使得結構體的賦值更加便捷,而且可以單獨對某一個變數進行賦值而不需要管其他的變數。
倘若我們使用前三項的方法只對age
我們也可以單獨進行一個結構體的賦值,如下
static struct id_mesg per_one = {
.name = "gates",
.age = 43,
.job = "ITman",
};
上述程式執行之後的結果是:
name: bimax age: 23 job: heroname: deadpool age: 34 job: marvel
name: thor age: 65535 job: god
name: linus age: 0 job: linuxman
name: gates age: 43 job: ITman