//cobj.h
#ifndef _COBJ_
#define _COBJ_
typedef void* HPERSON;
HPERSON createPserson(const char *name);
void setPserson(HPERSON person,int age,int
number);
void displayPerson(HPERSON person);
void deletePerson(HPERSON person);
#endif
//cobj.c
#include
#include
#include
#include "cobj.h"
typedef struct _person
{
char *name;
int age;
int number;
}person;
HPERSON createPerson(const char *name)
{
printf("createPerson\n");
person *person=NULL;
person=(person*)malloc(sizeof(person));
person->name=malloc(strlen(name)+1);
strcpy(person->name,name);
person->age=0;
person->number=0;
return ((void*)person);
}
void setPserson(HPERSON person,int age,int number)
{
printf("setPserson\n");
if(person)
{
((person*)person->age=age;
((person*)person->number=number;
}
}
void displayPserson(HPERSON person)
{
if(person)
{
printf("name:%s\n number:%d\n age:%d\n",
((person *)person)->name,
((person *)person)->number,
((person *)person)->age);
}
}
void deletePerson(HPERSON person)
{
printf("deletePerson\n");
if(person)
{
free((person*)person->name);
free(person);
}
}
//main.c
#include
#include
#include "cobj.h"
int main(void)
{
HPERSON person=createPerson("xiaoming");
setPerson(person,12,11);
displayPerson(person);
deletePerson(person);
return ;
}
句柄本質是一個void*形式的指針,可以在使用是轉換成 任意需要的類型指針。在 c語言中可以使用句柄表示一個 對象,在程式的接口中每一個對象至少需要有建立 删除 兩個基本函數,然後根據需要實作其他的操作函數。