数据结构7-基本的回调用法

数据结构7-基本的回调用法

code:

#include 


void set_name(char *name, void (*callback)(void));
void set_age(int age);
void set_weight(int weight);
void get_show_student();

typedef struct
{
	void (*set_name)(char * name, void (*callback)(void));
	void (*set_age)(int  age);
	void (*set_weight)(int  weight);
	void (*get_show_student)(void);

}student;

static student student_s = 
{
	.set_name = set_name,
	.set_age = set_age,
	.set_weight = set_weight,
	.get_show_student = get_show_student,

};
student student2_s; 

int i=0;

void set_name(char *name,void (*callback)(void))
{
	printf("name: %s\r\n",name);
    callback();
	i++;
}

void set_age(int age)
{
	printf("age: %d\r\n",age);
	i++;
}

void set_weight(int weight)
{

	printf("weight: %d\r\n",weight);
	i++;
}


void get_show_student()
{
	printf("get_show_student: %d\r\n",i);
}

int main()
{
    printf("start ... \r\n");
    
    //1.回调直接调用
    student_s.set_age(10);
    student_s.set_weight(110);
    
    //2.函数参数使用回调
	student_s.set_name("zhang er",get_show_student); //= "zhang yi";
    student_s.get_show_student();
    
    //3.赋值另一个结构回调
    student2_s.set_age = student_s.set_age;
    student2_s.set_name = student_s.set_name;
    //4.回调 , 如果没有赋值,直接回调,会出现段错误
    student2_s.set_age(20);
    student2_s.set_name("zhang yi",get_show_student);
    student_s.get_show_student();
    

	return 0;
}

结果:
start ... 
age: 10
weight: 110
name: zhang er
get_show_student: 2
get_show_student: 3
age: 20
name: zhang yi
get_show_student: 4
get_show_student: 5

你可能感兴趣的:(数据结构,数据结构,c++,开发语言)