在C語言中,變量有效性的範圍稱變量的做用域。不只對於形參變量,C語言中全部的量都有本身的做用域,按做用域範圍不一樣,可分爲局部變量和全局變量兩種變量類型。php
在LoadRunner中應用全局變量和局部變量的示例腳本以下:web
圖4.9 LoadRunner 9.5 Web(HTTP/HTML)協議腳本代碼截圖api
上面代碼是在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部分代碼以下:spa
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的值。blog
上面的腳本執行結果以下:作用域
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... |
根據執行結果,咱們能夠得出以下結論:get
1. 全局變量是在函數外部定義的變量,它不屬於哪個函數,它屬於一個源程序文件,其做用域是整個源程序。局部變量是在函數內做定義說明的,其做用域僅限於函數內。it
2. 當局部變量和全局變量同名時,在局部變量的做用範圍內,全局變量不起做用,如在Action()函數部分,a的值爲10,而非全局變量8,這就回答了咱們前面提的問題。固然,若是在該部分沒有聲明同名局部變量,則輸出的內容爲全局變量的值,如:變量b和「globals.h」中的全局變量icount的值,則輸出值,爲全局變量的值。io