LoadRunner脚本编写之二

发表于:2012-8-03 11:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:虫师    来源:51Testing软件测试网采编

  动态存储方式与静态存储方式

  我们在定义变量是,根据定义的位置不同,分为全局变量与局部变量。我出生在一个叫“舞阳”的小县城,在这个县城中也有人名“舞阳”,前一个作用于整个县城,后一个只作用于他个人。那么从变量值的存在生存期角度,又可分为静态存储方式和动态存储方式两类。

  静态存储方式:是指在程序运行期间分配固定的存储空间方式。

  动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。

  用户存储空间可分三部分:

  1、程序区

  2、静态存储区

  3、动态存储区

  全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序运行完毕就释放,在程序执行过程中它们占据固定的存储单元,而不动态地进行分配和释放。

  动态存储区存放以下数据:

  (1)函数形式参数

  (2)自动变量(未加static声明的局部变量)

  (3)函数调用时的现场保护和返回地址

  上面这些数据,在函数开始调用时分配动态空间,函数结果时释放这些空间。

  在C语言中,每个变量和函数有两个属性:数据类型和数据的存储类别

  * 自动(auto)变量

  函数中的局部变量,如不专门的声明为static存储类别,都是动态地分配存储空间的。

  * 静态(static)声明局部变量

  有时希望函数中的局部变量的值在函数调用结束后不消失而保留,这时就应该指定局部变量为“静态局部变量”,用static关键字。

  *  寄存器(register)变量

  为了提高效率,C语言允许把局部变量的值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register变量。

static int c;

int prime(register int number)   //判断是否为素数
{
    register int flag=1;
    auto int n;
    for (n=2;n<number/2 && flag==1;n++) {
        if (number % n==0) flag=0;
    return(flag);   
       
    }
}

demo(int a)    //static、auto变量的演示函数
{
    auto int b=0;
    int d;
    static c=3;
    b=b+1;
    c=c+1;
    lr_output_message("demo()函数中的d=%d",d);
    lr_output_message("demo()函数中的static c=%d",c);
    return a+b+c;

}
Action(){
    int a=2,i;   //变量声明

    for (i=0;i<3;i++) {
        lr_output_message("demo()函数部分第%d运行情况如下:",i+1);
        lr_output_message("函数demo运行结果为:%d",demo(a));
        lr_output_message("-------------------\n\r");
    }

    //判断13是否为素数,并输出提示信息
    if (prime(13)==0)
        lr_output_message("13不是素数!");
    else
        lr_output_message("13是素数!");

    lr_output_message("c=%d",c);  //输入变理的值

    
    return 0;
}

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • new_lio
    2012-8-06 11:02:38

    为什么第二个和第三个脚本,检查直接报这个错误,是没什么权限吗

    Error (pp_init): Failed to load data file        [MsgId: MERR0]
    Warning: Extension wsrun32.dll reports error -1 on call to function ExtPerProcessInitialize        [MsgId: MWAR-10485]
    Error: Thread Context: Call to service of the driver failed, reason - thread context wasn't initialized on this thread.        [MsgId: MERR-10176]

  • yolanda_ji
    2012-8-06 09:41:36

    关于指针的函数输出错误,应该为:
    lr_output_message("*(p+%d)=%d",i,*(p+i));   //以指针方式输出数组

    lr_output_message("*(*(p1+%d)+%d)=%d",i,j,*(*(p1+i)+j));  //以指针方式输出数组

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号