Menu Close

C语言中void*用法举例

首页 论坛 RISC-V C语言中void*用法举例

标签: ,

  • 该话题包含 1个回复,2 人参与,最后由wangff 更新于 3月前
正在查看 1 条回复
  • 作者
    帖子
    • #24047
      Yvonne
      版主
      积分: 795
      举重若轻

      课上有同学问C语言中 Void*类型的用法,这里举出一个void*用于struct内创建函数指针的例子。关于动态内存分配使用void*的例子见动态分配内存

      一般来说,struct内不能有函数的声明,但是这里使用函数指针void*可以巧妙将函数作为struct的成员。关于函数指针的内容见指针参数和函数指针

      注意:

      • 在定义print函数的时候应该写成  “void (*print) (…); ”   ,而不是”(void*) print (…);” ,后者编译器可能会报错
      • 在主函数中调用print函数的时候需要使用指针传递(使用 &)。
      struct point
      {
          int x;
          int y;
          void (*print)(struct point*);
      };
      
      void print_x(struct point* p)
      {
          printf("x=%d\n", p->x);
      }
      
      void print_y(struct point* p)
      {
          printf("y=%d\n", p->y);
      }
      
      int main(void)
      {
          struct point p1 = { 2, 4, print_x };
          struct point p2 = { 7, 1, print_y };
      
          p1.print(&p1);
          p2.print(&p2);
      
          return 0;
      }
      

       

    • #24500
      wangff
      参与者
      积分: 326
      举重若轻

      谢谢老师!

正在查看 1 条回复
  • 哎呀,回复话题必需登录。