结构体是把一些单一类型组合在一起的做法

需要弄懂两个操作:存储数据和访问数据

#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;
}

运行此代码:

通过对比发现通过指针访问数据显然是可行的。