我们不能单独定义一个指针变量,指针必须声明一个数据类型。在FreeBASIC中,指针有两个名称:Pointer和Ptr,两者完全相同,都是声明指针变量。
指针的运算用操作符@或VarPtr获取变量的地址、StrPtr获取字符串地址,ProcPtr获取函数地址。用操作符 *访问存储在指针指向的内存位置的实际值。
这里我们要注意的是指针的数据类型,根据不同的数据类型,指针指向的区域和数值是不同的,比如Short Ptr指针指向的是一个2字节的地址,每次取值时只能取两个字节的数据,地址变化也不是每次加1,而是每次变化2字节的地址。
语法:
例如:
运行结果:
我们可以用如下框图理解指针,b是一个Integer类型的数据,占用4个字节,若一个方框表示一个Short类型(2个字节),则两个方框表示一个Integer类型的数据(4字节),因而&HAA00和&H5500方框都属于变量b的数据,指针a首先指向b的地址(&H12FEC0),所以获得了b的低2字节,指针加1后,地址变为&H12FEC2,则指向b的高2字节。
8.2.2 空指针
当指针变量的值为0或者为Null(在定义是值为0)时,我们称其为零指针或空指针。其存在的意义一个是避免指针的非法引用,另外就是在程序中作为状态比较,用以判断指针是否有确切值。一般的,我们在声明指针时如果没有初始化,则编译器默认将指针设置为0,即空指针。
例如:
8.2.3 Any指针
这里还需要注意的是指针也可以声明为一个Any指针,指向任意的数据类型,在使用时需要强制转换其类型。
例如:
8.2.4 指向指针的指针
指向指针的指针其实与普通的指针并没有本质的区别,我们按照之前的理解,指针是一个变量,则指向指针的指针也是一个特殊的变量,它所存储的值是一个指针的地址,所以它只能指向一个指针,而不是普通的变量。利用指向指针的指针我们就可以定义一个类似数组的指针数组。指向指针的指针,既可以访问它指向的指针的数据,也可以访问它指向的指针所指向的数据。这里要注意的是指针取值*运算是按从右到左的顺序执行的。
语法:
例如:
参考博客:http://www.office-cn.net/blog-230471-15221.html