#include <stdio.h> #include <string.h> struct Person { char name[24]; char character[30]; int age; struct Birthday { int day; char month[10]; int year; } birthday; }; int main() { struct Person man1; strcpy(man1.name, "Jerry Seinfeld"); strcpy(man1.character, "fastidious"); man1.age = 56; man1.birthday.day = 4; strcpy(man1.birthday.month, "June");// = 6; man1.birthday.year = 2020; printf("My name is %s, I was born on %s-%d-%d, so I'm %d years old now. And my friends always complain I'm too %s. ", man1.name, man1.birthday.month, man1.birthday.day, man1.birthday.year, man1.age, man1.character); return 0; }
输出结果为:
My name is Jerry Seinfeld, I was born on June-4-2020, so I'm 56 years old now. And my friends always complain I'm too fastidious.
虽然上面的初始化太复杂,但是可以选择性的赋值
#include <stdio.h> struct Person { char name[24]; char character[30]; int age; struct Birthday //嵌套一个struct,Birthday也可以删掉,直接写成struct,因为Birthday根本没用到,用的只是birthday { int day; char month[10]; int year; } birthday; }; int main() { struct Person man1 = {"Jerry Seinfeld", "fastidious", 56, 4, "June", 2020}; //注意对应好,如果缺少,int默认补0, char默认空格 printf("My name is %s, I was born on %s-%d-%d, so I'm %d years old now. And my friends always complain I'm too %s. ", man1.name, man1.birthday.month, man1.birthday.day, man1.birthday.year, man1.age, man1.character); return 0; }