
pascal语言中指针类型和动态数据结构 整型、实型、布尔型等各种简单类型和数组、记录、集合等各种结构类型的数据都属于静态类型的数据。所谓静态类型数据是指使用前必须在程序的说明部分给出描述这种数据的类型说明(TYPE语句)或变量说明(VAR语句),以定义这类数据占用内存空间的大小规模,使系统在程序的编译阶段能对这些变量进行内存空间的分配,空间一旦分配则不能在程序的执行过程中加以改变。现在讨论另一种类型的数据,这些数据和静态类型数据不同,它们无需在程序的变量说明部分对其进行说明,也就是系统在程序编译阶段不对这些变量分配内存空间,而是在程序的运行过程中根据需要用相应的命令动态地建立、分配内存空间,以至这种类型的数据占用内存空间的大小规模可以动态地发生变化,故称之为动态类型数据结构。 一、指针变量以及动态数据的产生 讨论动态类型数据是如何在程序的运行阶段动态地建立起来的,就要讨论与之有关的一种静态类型数据 指针。 指针类型属于静态的简单类型,但和整型、实型、字符型这些简单类型不同。首先整型、实型、字符型的变量单元中存放的是相应类型的数据,而指针类型变量单元中存放的是某种类型变量单元的地址,通过该地址可以找到这种类型的数据,所以称它是一个指针,而这种数据就是动态数据;其次整型、实型、字符型等类型都有规定的标准标识符integer、real、char等与之对应,而指针类型则没有相应的标准标识符。这是因为在动态数据产生的过程中,程序员关心的是指针指向一个什么类型的数据。所以,在Pascal程序说明部分定义指针类型时必须给出该指针类型变量所指向的数据类型,即该指针类型标识何种类型的变量。 如在程序的类型说明部分有: TYPE pint=^integer; pre=^real; 表明程序定义了两种指针类型pint和pre。pint用于标识整型的变量,pre用于标识实型的变量。 若在程序的变量说明部分有指针类型变量的说明: VAR p1,p2:pint; q:pre 表明程序定义了三个指针变量,p1和p2是pint类型的变量,q是pre类型的变量。在程序的编译阶段,同其它简单变量(整型、实型、字符型等)一样,系统要给它们分配空间,这就是前面所说的指针变量是静态变量。在内存空间分配之初,p1、p2和q变量单元还未定义,此时指针变量不指向任何一个内存变量单元,因为所需指向的动态数据单元还未产生,它们是在程序运行过程中利用p1、p2和q变量以及new过程语句动态地产生的。一旦有动态数据产生,则p1、p2变量单元中将存放动态产生的整型变量单元的地址,q变量单元中将存放动态产生的实型变量单元的地址。 动态数据的产生是系统在程序运行阶段执行过程语句new(<指针变量名>)时进行,所产生的动态数据单元用:“<指针变量名>^” 来命名: new(p1):系统动态地产生整型变量单元,即动态地给一个整型变量分配内存单元,并将该单元的地址放入p1单元中。该整型变量单元命名为p1^,表明通过p1指针可访问这个单元的整型数据。 new(q):系统动态地产生实型变量单元,即动态地给一个实型变量分配内存单元,并将该单元地址放入q单元中。该实型变量单元命名为q ^,表明通过q指针可访问这个单元的实型数据。 二、指针类型变量的应用以及动态数据的 *** 作 下面讨论指针类型变量的应用,即如何将整型数据或实型数据等存放到动态产生的相应的内存变量单元中,并对这些单元进行必要的 *** 作。 首先可以用赋值语句将一个指针变量的地址值赋给另一个指针变量,如: p2:=p1,表示将p1单元的地址值赋给p2,此时p2单元的内容也是指向某整型变量单元的地址值。 但p1:=q不行,因为在定义中可见两指针类型所标识的类型变量不同。 下面通过一个简单的例子看指针类型变量的应用: PROGRAM EX00(OUTPUT); TYPE pint=^integer; pre=^real; VAR p:pint; q:pre; BEGIN NEW(p); p^ :=3; NEW(q); q^ :=45; q^:=q^* p^; WRITELN(q^); DISPOSE(p);DISPOSE(q) END 最后语句DISPOSE(p)以及DISPOSE(q)为释放由p和q指针所指向的变量单元。 指
如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快! vaela
您好,如果是多线程,可以定义一个全局环境变量,不是多线程也可以定义环境变量,从您这个脚本上看,定义一个环境变量最合适!这个就是定义全局环境变量:DimEnv X X 旁边有个空格,在子程序里判断
if X = 情况1 then
call A()//执行结果:输出对情况A的描述
elseif X = 情况2 then
call A()//执行结果:输出对情况B的描述
END IF
至于如何判断什么时候是情况1或者情况2,我就举个例子,你要懂得举一反三!比如我想做一个检测键盘按键的脚本:
DimEnv 检测按键 //定义一个环境变量
IF WaitKey = 65 then //如果我按下了A键
检测按键 = 1
elseif WaitKey = 68 then //否则如果我按下了D键
检测按键 = 2
END IF
//执行到这里的时候脚本已经把值保存到变量“检测按键”中了,想用的时候就可以随时引用,这里我引用到你的例子中,希望你能看明白
IF 检测按键 = 1 then //当 变量“检测按键”=1时,也就是说前面我已经按下了A键
call A()//执行结果:输出对情况A的描述
elseif 检测按键 = 2 then //当 变量“检测按键”=2时,也就是说前面我已经按下了B键
call A()//执行结果:输出对情况B的描述
END IF
//看到这里,您明白变量怎么用了么?这些也是都可以应用到自定义控件当中,如按钮,多选按钮,下拉框等等,选一个就各给一个变量值!希望您学会了,很高兴为您解答!
主要软件版本: 10
主要软件修正版本:次要软件: LabVIEW Modules>>LabVIEW DSC Module, LabVIEW Development Systems>>LabVIEW Professional Development System, LabVIEW Development Systems>>LabVIEW Base Package
解答: 使用LabVIEW 8x数据记录与监控模块(DSC)模块的属性节点可以实现这个功能。
步骤:创建一个属性节点: 应用程序控制�0�3属性节点右键点击属性节点选择类�0�3共享变量�0�3共享变量IO 将属性节点的类选择为共享变量IO
点击属性节点的默认属性,选择 网络�0�3URL
将一个新的URL地址连接到这个属性接线端上
URL地址的语法是: \\COMPUTER NAME\SHARED LIBRARY\SHARED VARIABLE为属性节点增加一个元素,选择网络�0�3使用绑定创建 一个常量并且将值设置为 真
连接一个共享变量常量到属性节点的 引用 输入端 可以通过右键点击 引用 连线端,选择 创建�0�3常量 或者从函数面板选择 DSC 模块�0�3共享变量�0�3共享变量常量在共享变量常量中浏览选择到所需要的共享变量 如果您需要使用一个库下的多个共享变量, 您可以通过使用 DSC 模块�0�3引擎控制�0�3变量和IO服务器�0�3获取共享变量列表 来得到一个库下的所有共享变量的引用的一维数组,然后将这个数组连接到For循环的自动索引,为每个共享变量更改URL 在VI中编写了这些代码后,如果您不需要使用其他的DSC模块功能,比如纪录,报警,安全设置等。
点击“manu_data”[DB23]右键――属性――常规界面――属性――取消选中“优化的块访问”,点击后出现选项框选择“确定”按钮即可, 如何查看西门子博图软件DB数据块中的变量地址 返回
点击工具栏“编译”按钮,对数据块进行编译,当出现数据块已成功编译后,偏移量的数值就显示出来了, 如何查看西门子博图软件DB数据块中的变量地址 这样,就比较直观的看到数据块中各变量的地址分配,
以上就是关于在高级语言(如C或 PASCAL)中,指针类型是原子类型还是为什么全部的内容,包括:在高级语言(如C或 PASCAL)中,指针类型是原子类型还是为什么、【按键精灵】如何在子程序中引人变量、如何在程序中改变共享变量的绑定数据源等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)