zoukankan      html  css  js  c++  java
  • 结构体学习笔记5——指针成员与函数成员

    介绍结构体其他类型的成员,有指针成员,函数成员,结构体成员(结构体嵌套)。

    指针成员:

    指针成员就是函数体内有一个成员是 指针。

    #include <stdio.h>
    #include <stdlib.h>
    struct Stu {
        int * p;
    
    };
    
        
    int main(void)
    {
        int a[5] = { 1,2,3,4,5 };
        //struct Stu st = {NULL};// 给指针初始化,有几种形式:1.初始化为NULL ,就防止是野指针了。2.初始化为一个合法的地址,合法的地址有两种,一种是栈区的地址,第二种是堆区的地址
    //初始化为NULL 的话,指针就不能使用了,在使用之前会判断指针是否为空,不能使用就没什么意义,要对其进行赋值。 
        //如何对一个指针赋值呢?或者说让它指向一个合法的空间?
        //st.p=(int *)malloc(8);//调用指针中的成员都是这样调法,然后让st.p malloc 一段空间,所以把指针初始化为NULL 了,在使用的时候一定要给空间/指向一个空间
        struct Stu st = { a };
        printf("%d,%d
    ", st.p[1], st.p[3]);
        system("pause");
        return 0;
    }

    函数成员:

    在结构体中定义一个函数?可以吗

    #include <stdio.h>
    #include <stdlib.h>
    struct Stu {
        void fun()
        {
            printf("i am bing    
    ");    
        }
    };

    所以结构体中不能写函数。c++中 结构体内是可以写函数的,c中不允许。

    如何让结构体包含一个函数??

    可以在结构体内写一个函数指针。

    #include <stdio.h>
    #include <stdlib.h>
    void fun(void)
    {
        printf("i am bing    
    ");
    }
    struct Stu {
        //定义一个函数指针, 这个函数指针是什么类型的? 是fun 函数类型——无返回值,无参数 所以是void(*)();
        void(*p)() ;//p就是一个指向函数的指针,
    };
    int main(void)
    {
        struct Stu st = { fun };//函数名就是函数的地址,对函数名取地址也一样  
        (st.p)();
    
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    问题账户需求分析
    2017年秋季个人阅读计划
    阅读笔记01
    个人总结
    第二阶段站立会议07
    第二阶段站立会议06
    第二阶段站立会议05
    第二阶段站立会议04
    第二阶段站立会议03
    学习进度条(第十五周)
  • 原文地址:https://www.cnblogs.com/dabing0983/p/10539480.html
Copyright © 2011-2022 走看看