一句话,用隐式指针来实现把一些不想让别人知道的数据结构定义在.c文件中,而不是通常的.h头文件中。这样,只要.c文件不公开,别人就不能获得数据结构的详细信息。
看一个列子:
下面是interface.h头文件的内容,我们获得这个头文件,只知道有个struct sdata的数据结构和sdata_init()的函数。至于这个sdata结构包含些什么内容我们一点不知道,所以也不可能进行什么更改;
interface.h:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
typedef struct sdata * Sdata;
Sdata sdata_init(int i);
void sdata_print(Sdata sdata);
下面我们看写interface.c文件的内容:
#include "interface.h"
struct sdata{
int i;
};
Sdata sdata_init(int i)
{
Sdata sp=NULL;
sp=(Sdata)malloc(sizeof(struct sdata));
sp->i=10;
return sp;
}
void sdata_print(Sdata sdata)
{
printf("%d/n",sdata->i);
}
恩,在这个文件中才有具体的数据结构定义和函数的实现;
写个测试程序:
test.c
#include "interface.h"
int main()
{
Sdata sp;
sp=sdata_init(10);
sdata_print(sp);
}
可以看到,对于写test.c的程序员来说,他并不了解Sdata的内部结构是怎么样的,
他只要根据interface.h提供的函数进行各项操作就可以了。
这就是隐式指针的简单应用。开发借口代码这很重要。