您的位置:首页 > 其它

结构体中的函数指针

2011-05-19 16:00 267 查看
#include"stdio.h"
void fun(int x)
{
printf("函数指针%d/n",x);
}
struct node{
char name[20];
int prob;
void (*f)(int x);//函数指针
};
void main()
{
//方法1
struct node xiaobo={
.name = "xiaobo",
.prob = 0,
.f = fun,
};
printf("%s**,%d",xiaobo.name,xiaobo.prob);
xiaobo.f(0);
//方法2
struct node xiaobo1={"xiaobo1",1,fun};
printf("%s**,%d",xiaobo1.name,xiaobo1.prob);
xiaobo1.f(1);
//方法3
struct node xiaobo2={
name:"xiaobo2",
prob:2,
};
printf("%s**,%d",xiaobo2.name,xiaobo2.prob);
struct node *xiaobo3;
xiaobo3 =  malloc(sizeof(struct node));
memset(xiaobo3,0,sizeof(*xiaobo3));//memset给结构题清0
printf("memset 初始化结果:/n");
printf("**%s**,%d**/n",(*xiaobo3).name,(*xiaobo3).prob);

strcpy((*xiaobo3).name,"xiaobo3");//c语言在定义字符数组的时候才能使用=来初始化字符数组,char s[20] = "xiaobo3"
(*xiaobo3).prob = 3;
//memset(xiaobo3,0,sizeof(*xiaobo3));
printf("赋值初始后:/n");
printf("**%s**,%d**/n",(*xiaobo3).name,(*xiaobo3).prob);
(*xiaobo3).f = fun;
(*xiaobo3).f(3);
//system("pause");
}
/*
输出结果
xiaobo**,0函数指针0
xiaobo1**,1函数指针1
xiaobo2**,2memset 初始化结果:
****,0**
赋值初始后:
**xiaobo3**,3**
函数指针3
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: