码迷,mamicode.com
首页 > 编程语言 > 详细

C语言学习--类的模拟

时间:2014-05-12 02:45:26      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   c   

在学习linux下编程时,不可避免的要学C了,下面先简单写写C下对C++中的类的模拟。

我们要用到的是 struct和函数指针,不懂的同学自行搜索这两个东东,我现在只写我的第一个实现,更多实现方式我会稍后补充。

 

首先先上代码:

bubuko.com,布布扣
 1 #include<stdlib.h>
 2 #include<stdio.h>
 3 
 4 struct Swen{
 5   int number;
 6   char name;
 7   void (*test)(struct Swen* mythis);
 8 };
 9 
10 void test(struct Swen*);
11 void test(struct Swen* mythis)
12 {
13 
14   printf("Struct Swen‘s number:%d\n", mythis->number);
15   printf("Struct Swen‘s name: %c\n", mythis->name);
16 }
17 
18 int main(int argc, char* argv[])
19 {
20   struct Swen s;
21   s.number = 8;
22   s.name = S;
23   printf("num name has been called.\n");
24   s.test = test;
25   s.test(&s);
26 }
bubuko.com,布布扣

首先我们先定义随便定义一个结构体,名称为Swen,在结构体内定义变量和函数指针,函数我们在结构体外实现,这里注意,函数如果要调用结构体内数据,我们就要传入本结构体的指针。

原本,我的代码是没有24行的这行代码的,后来编译没错,但运行时出现了“段错误”,因为指针指向的内存为空,为什么呢?我们发现23行代码已经执行,那么我们的问题就出现在这个函数上了。

为什么没法找到这个函数所指向的内存呢?因为如果没有第24行代码,结构体内的函数指针根本就什么都没有!第24行代码的意义就是将函数地址赋给结构体内的函数指针!

先整理那么多,剩下的后面再补充,欢迎各位大大指正。

C语言学习--类的模拟,布布扣,bubuko.com

C语言学习--类的模拟

标签:style   blog   class   code   java   c   

原文地址:http://www.cnblogs.com/Rapheal/p/3721318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!