||
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。
要搞清一个指针需要搞清指针的四方面的内容:
指针的类型、指针所指向的类型、指针的值(或者叫指针所指向的内存区)、指针本身所占据的内存区。
让我们分别说明:
先声明几个指针放着做例子:
例一:
(1)、dim P as integer ptr
(2)、dim P as string ptr
(3)、dim P as integer ptr ptr
(4)、dim P() as integer ptr
说明:在Freebasic中声明指针是用ptr(或pointer)这个关键字
Dim P as integer ptr ‘指针的类型是integer
Dim P as string ptr ‘指针的类型是string
接下来看指针所指向的类型
Dim P as integer ptr ‘指针所指向的类型是integer
Dim p as string ptr ‘指针所指向的类型是string
注:(1)指针的类型(即指针本身的类型)和指针所指向的类型是两个概念
(2)指针的类型与指针所指向的类型具有相同的类型
当你对FB越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成 "指针的类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。
指针的值----或者叫指针所指向的内存区(地址)。指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。
在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。
指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。
以后,我们说一个指针的值是XX,就是相当于说该指针指向了以XX为首地址的一片内存域;
我们说一个指针指向了某地块内存区域,就相当于说该指的值是这块内存区域的首地址。
注:指针所指向的内存区和指针所指向的类型是两个完全不同的概念。
在例 一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向 的内存区是不存在的,或者说是无意义的。
以后,每遇到一个指针,都应该问问: 这个指针的类型是什么?指针指 的类型是什么? 该指针指向了哪里?(重点注意) 4 指针本身所占据的内存区 指针本身占了多大的内存? 你只要用函数 sizeof(指针的类型)测一下 就知道了 。
在32位平台里,指针本身占据了4个字节的长度。
指针本身占据的内存这个概念在判断一个指针表达式(后面会解释)是否是左值时很有用。
下面用图来展示可能会更清晰:
2、运算符@和*
|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )
GMT+8, 2024-11-25 07:53 , Processed in 0.078936 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.