其他分享
首页 > 其他分享> > 结构体内的函数

结构体内的函数

作者:互联网

结构体内也是可以添加函数的,找了很久发现都是定义和实现都是写在一起的。以下代码来源:链接

include<stdio.h>
#include<malloc.h>
struct Hello{
	void (*sayHello)(char* name); 
};
void sayHello(char* name){
	printf("你好,%s\n",name);
}
int main(){
	struct Hello* hello=(struct Hello *)malloc(sizeof(struct Hello));
	hello->sayHello=sayHello;//这个结构体有多少个函数,就要在这个有多少个结构体内,函数指针指向函数的声明。
	hello->sayHello("a");
	return 0;
}

此时也可以将sayHello的定义和实现分开。

当我直接在.h文件中实现了sayHello时会出现重复定义的情况,这就很奇幻了,后来我在实现的时候加了static关键字就能结构体函数重复定义的问题了。

include<stdio.h>
#include<malloc.h>
struct Hello{
	void (*sayHello)(char* name); 
};
static void sayHello(char* name){
	printf("你好,%s\n",name);
}
int main(){
	struct Hello* hello=(struct Hello *)malloc(sizeof(struct Hello));
	hello->sayHello=sayHello;//这个结构体有多少个函数,就要在这个有多少个结构体内,函数指针指向函数的声明。
	hello->sayHello("a");
	return 0;
}

 

标签:struct,hello,name,sayHello,结构,Hello,体内,函数
来源: https://blog.csdn.net/m0_38086244/article/details/114316770