在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的值,则输出值,为全局变量的值。

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

  1. 深入理解Loadrunner中的Browser Emulation

    深入理解Loadrunner中的Browser Emulation 深入理解Loadrunner中的Browser Emulation 3E?']V'VgB5n*S0一:基本介绍51Testing软件 ...

  2. Javascript中的局部变量、全局变量的详解与var、let的使用区别

    前言 Javascript中的变量定义方式有以下三种方式:1.直接定义变量,var与let均不写: a = 10; 2.使用var关键字定义变量 var a = 10; 3.使用let关键字定义变量 ...

  3. C++中的局部变量、全局变量、局部静态变量、全局静态变量的区别

    局部变量(Local variables)与 全局变量: 在子程序或代码块中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序 ...

  4. linux 中的局部变量、全局变量、shell 变量的总结

    系统局部变量和全局变量  一.变量分类局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用 ...

  5. Python学习【第9篇】:python中的局部变量与全局变量

    1.全局变量 全局变量定义后可被下面所有函数进行调用 例子: name = "xiao"def chang_name(): print("chang_name" ...

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

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  7. python中关于局部变量与全局变量的认识

    1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量,例如: num = 100 def func(): num = ...

  8. 理解Loadrunner中的Browser Emulation Simulate

    案例 测试环境描述: 客户端 5台 Windows2000机器.服务器端  20台机器 一台F5(负载均衡设备,提供一个唯一的IP供客户端访问) 客户端绑定Host后,使用域名http://www.* ...

  9. python中的局部变量和全局变量

随机推荐

  1. std::function,std::bind

    std::function 和 std::bind 标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数.bind()接受一个函数(或者 ...

  2. Fast-cgi cgi nginx php-fpm 的关系 (转

    Fast-cgi  cgi  nginx  PHP-fpm 的关系 Fast-cgi是由cgi发展而来,是http服务器(http,nginx等)和动态脚本语言(php,perl等)之间的的通信接口, ...

  3. html5+ 获取当前设备的加速度信息

    getCurrentAcceleration 获取当前设备的加速度信息 void plus.accelerometer.getCurrentAcceleration( successCB, error ...

  4. 字符串匹配的KMP算法详解及C#实现

    字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...

  5. C# Attribute 特性 学习

    一.特性的概述 公共语言运行库允许您添加类似关键字的描述性声明(称为特性 (Attribute))来批注编程元素,如类型.字段.方法和属性 (Property).属性与 Microsoft .NET ...

  6. TCP的那些事儿(上)

    TCP的那些事儿(上) 原文链接:http://coolshell.cn/articles/11564.html TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面. ...

  7. Spring IoC实现解耦合

    public class UserDaoImpl implements UserDao{ @Override public void save(User user) { // TODO Auto-ge ...

  8. wireshark怎么抓包、wireshark抓包详细图文教程

    wireshark怎么抓包.wireshark抓包详细图文教程 作者:佚名  来源:本站整理  发布时间:2013-05-02 19:56:27 本日:53 本周:675 本月:926 总数:3749 ...

  9. wordpress编辑主题时报错Warning: scandir() has been disabled for security reasons in

    在ubuntu下面安装了一个wordpress程序,在后台什么都没干,编辑主题时,发现页面中报下面的错误. notice: /home/wwwroot/test.localhost/wordpress ...

  10. C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)

    1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域. 从作用域看: 1>全局变量具有全局 ...