MPLAB XC16 C编译器支持两种基本指针类型:数据指针和函数指针。数据指针存放可由程序间接读取,并可能间接写入的变量地址。函数指针存放可通过指针间接调用的可执行函数地址。指针与类型限定符的定义需符合ANSI C标准约定。指针可以像其他C对象一样进行限定,但应小心,因为会涉及到两个相关量。首先是实际的指针本身,它像普通的C变量一样对待,并保留存储空间。第二个量是指针引用的目标,或指针所指的目标。指针的一般形式如下:target_type_&_qualifiers * pointer’s_qualifiers pointer’s_name;指针名称旁的所有限定符与指针变量本身相关。左侧的类型和所有限定符与指针的目标相关。*操作符用于指针解引用,允许通过指针变量获取当前目标。以下给出了3个使用volatile限定符的指针定义示例,各字段均使用空白强调:volatile int * vip;int * volatile ivp;volatile int * volatile vivp;第一个示例是名为vip的指针,包含使用volatile限定的int对象地址。指针本身(存放地址的变量)不是volatile类型;但是,指针解引用时访问的对象被视为volatile类型,即可通过指针访问的目标对象可在外部进行修改。第二个示例是名为ivp的指针,包含一个int对象地址。在该示例中,指针本身是volatile类型,即指针包含的地址可在外部进行修改;但指针解引用时可以访问的对象不是volatile类型。后一个示例是名为vivp的指针,本身使用volatile限定,同时包含volatile对象地址。指针的定义对于赋予的每个目标地址都必须有效。描述指针时需小心,例如,“const指针”指向const对象的指针,或者本身即为const类型的指针?可以使用“指向const的指针”和“const指针”这种描述来阐明定义,但此类术语可能并不总是清晰。