虽说指针是C语言中比较复杂的语法,但是确实非常好用,因此我写过不少文章讨论C语言中的指针,相信对初学者理解指针有一定的帮助。
事实上,的确有读者私信我说看了这些文章,“总算不再畏惧指针了”。不过他同时也问了一个问题:C语言有“不透明指针(opaque pointer)”吗?要是有的话,什么样的指针才是不透明指针呢,有什么用呢?
C语言的“不透明指针”有什么用?
C语言的“不透明指针”
坦诚地说,我比较讨厌向初学者说一些非常“专业”的名词,这不利于理解概念的本质,也容易让一些初学者产生畏惧的心理。“不透明指针”就是其中之一,其实它并不是多难的概念,甚至都不是什么新概念,只是一些基本知识的用法而已,只不过取了个非常装x的名字。
从字面意思来看,“不透明”意味着看不到内部,因此“不透明指针”即看不到内部定义的指针。这样说有些抽象,我们来看个例子:
typedef struct pmpi_s *pmpi;
上面这行C语言代码使用 typedef 关键字定义了一个结构体指针类型 pmpi,结构体由 pmpi_s 指定。虽然还没有具体定义结构体 pmpi_s,但是已经可以使用 pmpi 定义变量了