#include "stdio.h"
#include "malloc.h"
typedef char* string;
typedef struct Calculator
{
void *pointer;
void (*PRINT)(int); //定义函数指针,此处不能再使用typedef
int (*ADD)(int,int); //使用时需要初始化一个变量出来
}Cal;
/***********************************************************************/
void print(int num) //普通函数
{
printf("Number:%d\n",num);
}
int add(int a,int b) //普通函数
{
return a+b;
}
/***********************************************************************/
Cal a = { //初始化结构体变量a
.PRINT = print,
.ADD = add
};
int main(void)
{
void *p;
string str = "hello world!"; //变量
Cal *b = (Cal*)malloc(sizeof(Cal)); //初始化结构体变量b
a.PRINT(18);
b->ADD = add;
printf("b.ADD:%d\n",b->ADD(2,3));
printf("%s\n",str);
p = &str;
printf("%s\n",*((string*)p)); //先转换成string*指针,再取值
/************ void *pointer *********/
b->pointer = &str; //(*b).pointer = &str;
printf("%s\n",*((string*)(*b).pointer));
a.pointer = &str;
printf("%s\n",*((string*)a.pointer));
return 0;
}
06-07
2929
11-17
2236
09-05
224
09-06
469