在 C 语言中实现单例模式需要使用静态变量来保持唯一实例的状态,并提供一个全局函数来获取该实例。以下是一个简单的单例模式示例:
#include <stdio.h>
#include <stdlib.h>
typedef struct singleton {
// data members
int data;
} singleton;
singleton* get_singleton_instance() {
// use static variable to keep unique instance
static singleton* instance = NULL;
// if the instance is not created yet, create it
if (instance == NULL) {
instance = (singleton*) malloc(sizeof(singleton));
instance->data = 0;
}
// return the singleton instance
return instance;
}
int main() {
// get the singleton instance
singleton *s1 = get_singleton_instance();
singleton *s2 = get_singleton_instance();
// check if s1 and s2 are pointing to the same object
if (s1 == s2) {
printf("s1 and s2 are pointing to the same object\n");
} else {
printf("s1 and s2 are pointing to different objects\n");
}
// set data member of s1
s1->data = 42;
// check if the data member of s2 is also 42
printf("s2->data = %d\n", s2->data);
return 0;
}
在此示例中,我们使用静态变量 instance 来保存唯一实例的状态,并在 get_singleton_instance() 函数中进行实例化。当第一次调用 get_singleton_instance() 时,它将创建唯一实例,并返回指向该实例的指针。在随后的调用中,该函数将返回相同的实例。
【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~