C语言基础:C语言结构体(5)

上一节, 我们讲解了结构体数组, 这次我们来讲解指向结构体的指针, 之前我说过, 只要有地址, 指针就能指向它, 那么下面我们来看看结构体的指针吧~~~


下面我们来看一个例子:

#include <stdio.h>

int main()
{
    struct Student
    {
        int age;
        char *name;
    };
    
    struct Student sut1 = {20, "小明"};
    
    printf("%d  %s
", sut1.age, sut1.name);
    
    return 0;
}

按照常规, 我们是这样子定义结构体, 并且调用结构体, 但是用了指针, 我们就有了其他的调用方式, 下面我们继续来看例子:

#include <stdio.h>

int main()
{
    struct Student
    {
        int age;
        char *name;
    };
    
    struct Student stu = {20, "小明"};
    
    printf("stu = %d  stu = %s
", stu.age, stu.name);
    printf("stu = %p
", &stu);
    
    struct Student *p;
    
    p = &stu;
    // 这不是最常用的写法
//    printf("p = %d p = %s
", (*p).age, (*p).name);
    
    // 下面这个才是我们结构体指针最常用的写法
    printf("p = %d p = %s
", p->age, p->name);
    printf("p = %p
", p);
    
    return 0;
}

输出的结果:



下面我们来看看示意图:



指针p存的是结构体stu的地址, 可以间接调用里面的成员, 所以也就有我们所看到的输出结果啦~~~



好了, 这次就到这里吧~~~剩下的东西和之前讲指针里面的知识点都差不多的, 所以这里就不多介绍了~~~

原文地址:https://www.cnblogs.com/iOSCain/p/4282882.html