注册 登录
Office中国论坛/Access中国论坛 返回首页

ganlinlao的个人空间 http://www.office-cn.net/?230471 [收藏] [复制] [分享] [RSS]

日志

FreeBasic中的指针基础入门一----理解指针变量——冬瓜汤整理

已有 3018 次阅读2014-9-30 17:27 |个人分类:FreeBasic| FreeBasic入门, FreeBasic指针入门

前言
对于使用VB的人,指针概念基本上是一片空白。而指针是C语言最大的特点。在FreeBasic中适当地用好指针,能带来不少的便利和灵活性。对于指针是适当使用而不是滥用。
因此理解指针概念,就变得相当有意义了。

1、细说指针

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。

要搞清一个指针需要搞清指针的四方面的内容:

指针的类型、指针所指向的类型、指针的值(或者叫指针所指向的内存区)、指针本身所占据的内存区。

让我们分别说明:

先声明几个指针放着做例子:

例一:

(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、运算符@*

在FreeBasic中@是取地址运算符。*是间接运算符(取值运算符)





评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|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.

返回顶部