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


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

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

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

  • 相关阅读:
    Algs4-1.1.17找出以下递归函数的问题
    Algs4-1.1.16给出exR1(6)的返回值
    Algs4-1.1.15编写一个静态方法histogram()
    Algs4-1.1.14实现以2为底的对数
    Algs4-1.1.13编写一段代码,打印出一个M行N列的二维数组的转置(交换行和列)
    Algs4-1.1.12以下代码段会打印出什么结果?
    python将一个列表的元素随机打乱
    python 类似java的三目运算符
    java的三元运算符
    java 的Colections类(Java也有python类似列表的反转、排序等方法)
  • 原文地址:https://www.cnblogs.com/zhengah/p/4791105.html
Copyright © 2020-2023  润新知