0. 指針和結(jié)構(gòu)體
- 概念:通過
指針
保存
結(jié)構(gòu)體變量地址
struct Person { char *name; int age; double height; }; struct Person sp = {"wxx", 18, 2.00}; struct Person *sip = NULL; sip = &sp;
- 操作
struct Person { char *name; int age; double height; }; struct Person sp = {"wxx", 18, 2.00}; struct Person *sip = NULL; sip = &sp; (*sip).name = "qtt"; (*sip). age = 18; (*sip). height = 1.75; printf("name = %s, age = %i, height = %lf\n", (*sip).name, (*sip). age, (*sip). height); sip->name = "xdy"; sip->age = 1; sip->height = 0.75; printf("name = %s, age = %i, height = %lf\n", sip->name, sip->age, sip->height);
1. 結(jié)構(gòu)體數(shù)組
- 概念:
數(shù)組元素
為結(jié)構(gòu)體值
struct Department { char *name; int count; double kpi; }; struct Department departments[3] = { {"iOS", 10, 100.0}, {"andorid", 10, 88.0}, {"php", 100, 66.0} }; departments[0].name = "秦子陽"; departments[0].count = 1000; departments[0].kpi = 10000.0; printf("name = %s, count = %i, kpi = %lf\n", departments[0].name, departments[0].count, departments[0].kpi);
2. 結(jié)構(gòu)體嵌套
- 概念:
結(jié)構(gòu)體屬性
又是一個結(jié)構(gòu)體
struct Time { int HH; int mm; int ss; }; struct Data { int year; int month; int day; struct Time time; }; struct Person { char *name; int age; struct Data work; }; struct Person sp = { "wxx", 18, { 2016, 10, 10, { 9, 10, 8 } } }; printf("year = %i, month = %i, day = %i\n", sp.work.year, sp.work.month, sp.work.day);
3. 結(jié)構(gòu)體和函數(shù)
-
結(jié)構(gòu)體類型變量
作為形參
幅疼,修改形參數(shù)據(jù)不能改變
實參數(shù)據(jù)struct Person { char *name; int age; double height; }; void demo(struct Person); int main(int argc, const char * argv[]) { struct Person sp = {"wx", 18, 2.00}; demo(sp); printf("sp.age = %i\n", sp.age); return 0; } void demo(struct Person p) { p.age = 20; printf("p.age = %i\n", p.age); }
-
結(jié)構(gòu)體類型指針變量
作為形參
,修改形參數(shù)據(jù)會改變
實參數(shù)據(jù)struct Person { char *name; int age; double height; }; void demo(struct Person *); int main(int argc, const char * argv[]) { struct Person sp = {"wx", 18, 2.00}; demo(&sp); printf("sp.age = %i\n", sp.age); return 0; } void demo(struct Person *p) { p->age = 20; printf("p.age = %i\n", p->age); }