结构体是把一些单一类型组合在一起的做法
需要弄懂两个操作:存储数据和访问数据
#include <stdio.h> struct Students { //成员 char name[5]; int age; char sex[5]; char tel[12]; }; int main() { struct Students stu = { "ling",18,"女","18119642419" }; printf("%s %d %s %s\n", stu.name, stu.age, stu.sex, stu.tel); print(&stu); return 0; }
注意:程序运行"struct Students stu=..."时内存才分配空间存储数据。
“%s”对应 字符串 类型
要注意printf函数里%s、%d 要与变量一一对应,否则编译器会凌乱,无法打印。
"printf("%s %d %s %s\n", stu.name, stu.age, stu.sex, stu.tel);"语句是否繁杂,如果频繁操作是否过于冗杂?
结合前面学的指针,是否可以通过stu的内存地址直接访问其所储存的数据呢?
#include <stdio.h> struct Students { //成员 char name[5]; int age; char sex[5]; char tel[12]; }; //use point 传参 void print(struct Students* p) { printf("%s %d %s %s\n", (*p).name, (*p).age, (*p).sex, (*p).tel);//必须带() printf("%s %d %s %s\n", p->name, p->age, p->sex, p->tel);//“->”结构体指针变量->成员名 } int main() { struct Students stu = { "ling",18,"女","18119642419" }; printf("%s %d %s %s\n", stu.name, stu.age, stu.sex, stu.tel); print(&stu); return 0; }
运行此代码:
通过对比发现通过指针访问数据显然是可行的。