理解LoadRunner中的局部变量和全局变量

  在C语言中,变量有效性的范围称变量的作用域。不仅对于形参变量,C语言中所有的量都有自己的作用域,按作用域范围不同,可分为局部变量和全局变量两种变量类型。

  在LoadRunner中应用全局变量和局部变量的示例脚本如下:

图4.9 LoadRunner 9.5 Web(HTTP/HTML)协议脚本代码截图

   上面代码是在LoadRunner 9.5中编写完成,请参见图4.9左侧,其包含一个文件名称为“globals.h”,您可以在该头文件中定义全局变量,这里我们定义了一个全局整型变 量,它的名称为“icount”,初始值为10,请参见globals.h头文件内容:

#ifndef _GLOBALS_H
#define _GLOBALS_H
 
//--------------------------------------------------------------------
// Include Files
#include "lrun.h"
#include "web_api.h"
#include "lrw_custom_body.h"
 
//--------------------------------------------------------------------
// Global Variables
 
int icount=10;//全局变量
 
#endif // _GLOBALS_H

  Action部分代码如下:

int a=8,b=15;     /*a,b为全局变量*/
 
int max(int a,int b) /*a,b为局部变量*/
{
       return a>b?a:b ;
}
 
int incb()
{
       ++b;
       lr_output_message("incb()函数中的a=%d,b=%d",a,b);
}
 
Action()
{
       int a=10;//局部变量
       lr_output_message("a=%d,b=%d",a,b);
       incb();
       lr_output_message("a=%d,b=%d",a,b);
       lr_output_message("max(%d,%d)=%d",a,b,max(a,b));
       lr_output_message("globals.h中的全局变量icount=%d", icount);
       return 0;
}

 
 在Action部分,起始声明了两个整型全局变量,a并赋予初值8,b赋予初值15。接下来,声明了两个整型数比较函数max(),在max()函数
中,有两个整型参数,a和b。incb()函数,实现了对全局变量加一,而后,输出全局变量a和b。Action()中,先声明了局部变量a,并赋初值为
10,接下来,输出局部变量a和全局变量b,又通过调用incb()函数对全局变量b进行加一,同事输出a和b。这里先给大家提一个问题,就是此时a的值
应该输出的是全局变量a还是局部变量a的值?请读者朋友们认真考虑一下。后续还输出max(a,b),这里同样存在上面的问题,最后输出
“globals.h”文件中的全局变量icount的值。

上面的脚本执行结果如下:

Running Vuser...
Starting iteration 1.
Starting action Action.
Action.c(17): a=10,b=15
Action.c(11): incb()函数中的a=8,b=16
Action.c(19): a=10,b=16
Action.c(20): max(10,16)=16
Action.c(21): globals.h中的全局变量icount=10
Ending action Action.
Ending iteration 1.
Ending Vuser...

  根据执行结果,我们可以得出如下结论:

  1. 全局变量是在函数外部定义的变量,它不属于哪一个函数,它属于一个源程序文件,其作用域是整个源程序。局部变量是在函数内作定义说明的,其作用域仅限于函数内。

  2. 当局部变量和全局变量同名时,在局部变量的作用范围内,全局变量不起作用,如在Action()函数部分,a的值为10,而非全局变量
8,这就回答了我们前面提的问题。当然,如果在该部分没有声明同名局部变量,则输出的内容为全局变量的值,如:变量b和“globals.h”中的全局变
量icount的值,则输出值,为全局变量的值。

时间: 2024-07-28 13:46:21

理解LoadRunner中的局部变量和全局变量的相关文章

深入理解Loadrunner中的Browser Emulation

深入理解Loadrunner中的Browser Emulation 深入理解Loadrunner中的Browser Emulation 3E?']V'VgB5n*S0一:基本介绍51Testing软件测试网)}'YL"iA#}v 51Testing软件测试网#a+J1A-oz0h%o 在Loadrunner的使用中,对于Run-time Settings下的browser emulation设置是比较容易让人产生困惑的地方.下面我们结合sniffer来具体看看每个选项的用途,以及对测试的影响.5

【转载】深入理解Loadrunner中的Browser Emulation

一:基本介绍 在Loadrunner的使用中,对于Run-time Settings下的browser emulation设置是比较容易让人产生困惑的地方.下面我们结合sniffer来具体看看每个选项的用途,以及对测试的影响. Browser Emulation 图 二:案例和工具 1.测试案例: 打开网站首页两次,对比不同Browser Emulation设置下loadrunner的行为,脚本如下. Action(){web_url("www.primeton.com","

php7中之局部变量,全局变量,超全局变量用法和区别

我们在使用php函数得时候遇到 ,局部变量,全局变量,超全局变量,如何灵活运用,php7中之局部变量,全局变量,超全局变量用法和区别? 1,局部变量 局部变量是在函数体内得变量,不能用外部得变量得值,只有当局部变量得值定义为全局变量才能使用外部变量得值 $a=1 function jj() { echo $a; } jj(); 2.全局变量 申明在函数外得变量,可以全局使用,使用关键词 global //global $a;$a="www.96net.com.cn";function

shell中的局部变量与全局变量

shell中的变量分局部变量和全局变量 bash的变量默认都是全局变量,脚本内都可以调用,无论在什么位置(函数体中也一样),即函数体外可以调用函数体内的变量 local一般用于局部变量声明,多在函数体内使用 如果要变为局部变量,则要使用local #!/bin/bashfunction test() {local aa="hello world"echo $a}testecho $a 输出结果为: hello world #!/bin/bashfunction test() {a=&q

在javascript中关于局部变量和全局变量简析

最近见群里有一道关于面试的试题,考察的关于全局变量和局部变量的基础知识: fun foo(){ var a = b = 0; } 让选择a和b的值分别为多少,或许不仔细看,我们很可能把a和b都当成了局部变量,值为0,其实a是局部变量,b是全局变量,这主要是由于从右至左的操作符优先级,跟我们平时在的css选择器在浏览器中解析的优先级别一样,优先级别较高的是表达式b=0,此时b未经声明,表达式的返回值为0,它被赋给var声明的局部变量a,如下表示: var a = (b = 0); 如果对链式赋值的

Python3基础 当函数中的局部变量与全局变量同名了,各管各的

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: def Test() : var=5 print(var) #局部变量 var=10 print(var) #全局变量 Test() print(var) #全局变量 #因为全局变量与局部变量存储在两个不同的空间 result: ============= RESTART: C

简单理解Objective-C中的Block

类似于js里面的闭包,java中的匿名函数,C#的委托,可以将func当做参数传递: 1.Block的声明 Block的定义和函数的声明差不多,就是把函数名改成(^blockName)即可.下面是block声明的代码. 有返回值的 int (^sumBlock) (int, int); 无返回值的 void (^myBlock)(int, int); 2.给block块赋值 给声明好的block,赋值.block的值就是个函数体,给block块赋值有两种方式,一个在声明的时候赋值,一个是先声明在

javascript中局部变量和全局变量的区别详解

javascript有两种变量:局部变量和全局变量.当然,我们这篇文章是帮助大家真正的区别这两种变量. 首先,局部变量是指只能在本变量声明的函数内部调用.全局变量时整个代码中都可以调用的变量.当然,单单从字面上理解肯定是不清楚的,下面我详细的介绍下: 大家都知道,变量是需要用var关键字声明的.但是javascript中也可以隐式的使用变量,就是不用声明,直接使用.而且,千万注意,javascript把隐式声明的变量总是当成全局变量来使用的. 例如: 代码如下: function myName(

JavaScript中局部变量与全局变量的不同

JavaScript中局部变量与全局变量 我们知道,JavaScript的变量是松散型的变量,也就是说,其变量只需用var声明,其赋值的类型是不限定的.比如: var person=18; person="zhuzhenwei";  即先给person保存了一个number类型的值,之后还可以保存一个string类型的值,但是,这种做法是不推荐的. 甚至我们都可以直接给一个变量赋值,而不需要声明.比如: person=18; person="zhuzhenwei";