精华内容
下载资源
问答
  • 形参变量和实参变量

    2020-09-07 12:13:16
    此时,我们把调用func函数时,传递给形参变量的数据称为:实参,如果传递给形参变量的数据是一个变量,我们称该变量为:实参变量。例如: intb = 8; func(b); 此时,定义了变量b,给变量b赋值8数值;然后,...

    假设有func函数的定义如下:

    void func(int a);

    那么,对func函数的调用如下:

    func(8);

    此时,调用func函数的时候,把8这个数据传递给func函数形参列表中定义的变量a,等价于:

    int a = 8;

    就相当于把8这个数值赋值给形参变量a。此时,我们把调用func函数时,传递给形参变量的数据称为:实参,如果传递给形参变量的数据是一个变量,我们称该变量为:实参变量。例如:

    int b = 8;

    func(b);

    此时,定义了变量b,给变量b赋值8数值;然后,调用func函数的时候,把变量b传递给func函数的形参列表,相当于:

    int a = b;

    此时,把变量b赋值给func函数的形参变量a;那么,称变量b为“实参变量”。那么,我们可以知道,在调用函数的时候,把变量传递给函数的形参列表,那么,该变量称为:实参变量,函数的形参列表中定义的变量,称为:形参变量

    如下是一个程序测试例子:

     

    运行结果如下:

     

    可以看到,调用func1(x); 的时候,参数x是一个变量,称为实参变量x;然后,传递给func1()函数的形参变量a。

    同理func2(x, y, z);函数的调用,实参是x, y, z变量,赋给func2()函数的形参变量a, b, c,相当于:

    int a = x;

    int b = y;

    int c = z;

    所以,在func2()函数中,形参变量a, b, c分别得到实参变量 x, y, z的值。

    韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

    展开全文
  • VB 变量形参实例

    2010-06-07 14:45:23
    VB 变量形参实例 VB 变量形参实例 VB 变量形参实例
  • c语言中形参与实参: 形参 form parameter ...//在函数中,形参就可以当作是一个局部变量。 if ( a>b ) return a; else return b; } 函数调用 int main() { int a=3,b=5 ; printf( "max=%d\n" , max(a,b) )

    c语言中形参与实参:

    形参 form parameter
    实参 real parameter
    出现在函数定义中的参数,就叫形参
    出现在函数调用中的参数,就叫实参
    函数定义:

    
    int max( int a , int b ) //这里的a,b就是形参
    {
    //在函数中,形参就可以当作是一个局部变量。
    if ( a>b ) return a;
    else return b;
    }
    函数调用
    int main()
    {
    int a=3,b=5 ;
    
    printf( "max=%d\n" , max(a,b) ); //这里的a,b就是实参 。
    return 0;
    }
    
    

    C中的函数参数传递是传递变量的数值,因此,这里相当于调用 max(3,5) 而子函数中收到的就会是 3 5这两值,而与ab变量没有关系。

    • 形参定义时编译系统并不为其分配存储空间,也无初始值,只有在函数调用时,临时分配存储空间,接受来自实参的值。函数调用结束,内存空间释放,值消失
    • 实参可以是常量,变量和表达式,但必须在函数调用前有明确的值。
    • 实参与形参必须类型相同且个数相同。

    变量的作用域:

    局部变量:
    在一个函数内部定义的变量或复合语句内定义的变量称为局部变量。任意一个函数都不能访问其他函数中定义的局部变量,因此在不同函数之间可以定义同名 的局部变量,不会发生冲突。

    -主函数中定义的变量,也属于局部变量,其作用范围同样仅限于主函数内。

    -形参也是局部变量

    -编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在函数被调用时,编译系统才根据需要临时分配内存。调用结束,内存空间释放

    全局变量:
    在所有函数(包括main函数)外定义的变量即为全局变量,全局变量存储在静态存储区中,其作用域是从定义的地方开始到本源文件结束。若定义时不进行初始化,系统将自动赋予其初值,数值型赋予0,字符型赋予’\0’.

    -当一个函数返回多个值时,使用全局变量更为有效

    #define PI 3.14  //宏定义 
    float c,area;  //全局变量
    void f(float r)
    {c=2*PI*r;
    area=PI*pow(r,2);
    }
    main()
    {float r;  //局部变量
    printf("input r:");
    scanf("%f",&r);
    f(r);
    printf("%f,%f",c,area);
    }
    

    -如果在同一个源文件中,全局变量和局部变量同名,则在局部变量的作用范围内,全局变量不起作用

    int a=3,b=5;
    int max(int x,int y)
    {
    int c;
    c=x>y?x:y;  //a>b ? a : b –>若?前结果为真则运算结果为a,反之运算结果为ba>b ? a : b –>若?前结果为真则运算结果为a,反之运算结果为b
    return c;
    }
    main()
    {
    int a=8;  //局部变量和全局变量a同名,因位在main函数中,所以使用的是main函数中变量a的值。
    printf("%d",max(a,b));
    }
    

    -全局变量在函数编译阶段分配内存,在程序的执行阶段不释放,因此全局变量只进行一次初始化,可不赋值

    展开全文
  • Swift的可变形形参, 常量形参, 变量形参, In-Out形参

    1.可变形形参

    在Swift中, 有一个很有趣的参数定义方式, 那就是在类型名后添加 “( … )” 这个符号, 这种定义方法, 可以让我们在调用的时候随意传递任意数量的输入值, 比如:

    func arithmeticMean(numbers: Double...) -> Double {
        var total: Double = 0
        for number in numbers {
            total += number
        }
            return total / Double(numbers.count)
    }
    var a = arithmeticMean(1, 2, 3, 4, 5)
    println("a is \(a)")
    // 打印出来的结果: a is 3.0
    
    var b = arithmeticMean(3, 8, 19)
    println("b is \(b)")
    // 打印出来的结果: b is 10.0

    2.常量形参和变量形参

    函数的形参默认是常量。如果在函数体内修改该形参的数值, 编译器是会报错的, 那我们应该怎么做呢? 下面让我们来看看:

    func alignRight(var string: String, count: Int, pad: Character) -> String {
        let amountToPad = count - countElements(string)
        if amountToPad < 1{
            return string
        }
    
        let padString = String(pad)
    
        for _ in 1...amountToPad {
            string = padString + string
        }
        return string
    }
    let originalString = "hello"
    let paddedString = alignRight(originalString, 10, "-")
    
    println(paddedString)
    // 打印出来的结果: -----hello

    PS: 这里面所定义的函数alignRight是用来给字符串排序用的, 而例子中的排序是从左往右的排序, 每一个新加入的字符都会往左边添加, 而这个例子里面的形参 string 前面就加了 var, 这样子我们就可以一直更新字符串的排序.


    3.In-Out 形参

    变量形参有一定的局限性, 变量形参所做的改变不会比调用函数更持久,并且在函数体外是不可见的, 变量形参仅存在于函数调用的声明周期中, 如果要在函数调用结束后继续保持形参值的改变, 那么就要把形参改成In-Out形参, 比如:

    func swapTwoInts(inout a: Int, inout b: Int) {
        let temporaryA = a
        a = b
        b = temporaryA
    }
    
    var someInt = 3
    var anotherInt = 107
    
    swapTwoInts(&someInt, &anotherInt)
    
    println("someInt is now \(someInt), and anotherInt is now \(anotherInt )")
    // 打印出来的结果: someInt is now 107, and anotherInt is now 3

    PS: In-Out 参数不能有默认值, 可变参数的参数也不能被标记为 inout. 如果您标记参数为 inout, 它不能同时被标记为 var 或 let.

    如果我们只是简简单单的用了可变形参的话, 那么出来的结果就不是如此了, 比如:

    func swapTwoInts(inout a: Int, var b: Int) {
        let temporaryA = a
        a = b
        b = temporaryA
    }
    
    var someInt = 3
    var anotherInt = 107
    
    swapTwoInts(&someInt, anotherInt)
    
    println("someInt is now \(someInt), and anotherInt is now \(anotherInt )")
    // 打印出来的结果: someInt is now 107, and anotherInt is now 107

    PS: In-out 形参不同于从函数返回一个值, 上边 swapTwoInts 例子没有定义返回类型或者返回值, 但它仍然会修改 someInt 和 anotherInt 的值, 对函数来说, In-out 形 参是一个影响函数主体范围外的可选方式.


    好了, 这次我们就讲到这里, 下次我们继续~

    展开全文
  • 1、形参和实参 1.1 形参的含义及使用 1.2 实参的含义及使用 2、局部变量和全局变量 2.1 变量作用域的概念 2.2 局部变量 2.3 全局变量 2.4 修改全局变量值

    目录

    1、形参和实参

    1.1 形参的含义及使用

    1.2 实参的含义及使用

    2、局部变量和全局变量

    2.1 变量作用域的概念

    2.2 局部变量

    2.3 全局变量

    2.4 修改全局变量值


    1、形参和实参

    1.1 形参的含义及使用

    • 形参 :形式参数,表示函数内所要用的参数的类型和名字,没有确定值

    形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。(定义函数的时候,括号里面写的那个参数名称,他只对那个函数内部有效,也就是函数内部就可以直接用这个名称,其他地方即使有同样的名称,也是和这个函数里面不同的。)

    def function(name):

    这里面的参数name就是形参,它代表的是所用参数的形式。只占据一个参数位置,没有具体值。

    1.2 实参的含义及使用

    • 实参 :实际参数,是调用函数时传递的值,也就是执行这个参数时真正的参数。实参是实际存在的,已经确定的参数,常量,变量,表达式,都是实参。
    #定义函数
    print(name + ‘123’)
    
    #调用函数
    function(‘hello’)
    
    

    上面print中的name为实参,调用函数中的hello也是实参,因为它们代表的是具体的参数值。 

    2、局部变量和全局变量

    2.1 变量作用域的概念

    首先我们要知道变量作用域:变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。
    (1)变量作用范围:可操作范围;
    (2)Python 是静态作用域,变量的作用域源于它在代码中的位置;
    (3)在不同的位置,可能有不同的命名空间。

    变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域是:全局变量、局部变量。

    2.2 局部变量

    • 定义:在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,我们将这样的变量称为局部变量。
    
    #定义一个函数,声明一个变量:分别测试函数体内访问、函数体外访问
    def testA():
        a = 100
        print(a) #函数体内部访问,能访问到a变量
                 #定义函数
    
    testA() #调用函数
    # print(a) #报错:a变量是函数内部的变量,函数外无法访问--因为a是一个局部变量,这就证实了当函数执行完毕后,其内部定义的变量会被销毁并回收。

    上面的变量a为局部变量是定义在testA函数内部的变量,在函数外部访问则会立即报错。(当函数被执行时,Python 会为其分配一块临时的存储空间,所有在函数内部定义的变量,都会存储在这块空间中。而在函数执行完毕后,这块临时存储空间随即会被释放并回收,该空间中存储的变量自然也就无法再被使用。)

    • 局部变量作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。

    2.3 全局变量

    • 定义:在函数体内、外都能生效的变量。
    
    #声明全局变量:函数体内外都能访问
    a = 100
    print(a)
    
    def testA():
        print(a)# 访问全局变量a,并打印变量a存储变量
    
    def testB():
        print(a)# 访问全局变量a,并打印变量a存储变量
    
    testA()
    testB()
    # 100
    # 100

    上面的a并未放在任何函数中,因此任何函数都可以访问a,所以a是全局变量。

    • 区别:和局部变量不同,全局变量的默认作用域是整个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。因此由上面的定义和例子也可以看出,所谓的全局变量跟局部变量主要是针对函数内外而言的

    2.4 修改全局变量值

    那么,如何将上例中testB()函数中变量a的值修改为200呢?

    # a = 100
    # print(a)
    # def testA():
        # print(a)
    # def testB():
        # a = 200 #如果直接修改a=200,此时的a是全局变量还是局部变量?结论:这个a是局部变量
        #         因为在全局位置(B函数调用后)打印a得到的不是200而是100
        # print(a)
    # testA()
    # testB()
    # 100 全局变量
    # 100 全局变量
    # 200 局部变量
    # print(a)
    # 100
    
    # 可以看出,如果在函数里面直接把变量a=200赋值,此时a不是全局变量的修改,而是相当于在函数内部声明了一个新的局部变量。
    
    
    
    a = 100
    
    def testA():
        print(a)
    
    def testB():
        # global 关键词声明a是全局变量
        global a
        a = 200
        print(a)
    
    testA()
    testB()
    
    print(a)
    # 100
    # 200
    # 200

    因此,要想修改全局变量,我们可以引入global关键词声明a是全局变量。

     

    展开全文
  • 实参、形参、局部变量和全局变量

    千次阅读 2020-09-15 16:53:39
    目录实参和形参实参数据传递函数调用过程形参实参和形参的关系局部变量和全局变量局部变量局部变量的作用域说明:全局变量全局变量说明: 实参和形参 实参 实际参数简称“实参”。在调用有参函数时,函数名后面括号...
  • 2、形参和内部同名变量是同一个参数; function f1(a) {//相当于首先var a=10; console.log(a);// 10; var a=1; console.log(a);// 1 console.log(arguments[0])// 1; } f1(10) var x=2,y=0,...
  • C++ 实参和形参 交换变量

    千次阅读 2014-12-10 10:09:35
    1. 传值调用机制 ( call- by-value machanism )  (1).... 传值调用形参是局部变量。调用函数时,该函数的形参被初始化为实参的值。 eg: void swap (int x, int y) { int temp; temp = x; x = y;
  • 函数的局部变量、全局变量形参和实参的关系,要涉及到内存中的一些概念: 1、系统堆栈空间 2、系统堆空间 3、代码区数据区 堆栈的大致概念特点: 堆栈在OS中的作用(在函数调用关系中的作用): main( )...
  • #include int d(int s){  int s = 9;  return s; } int main(void) {  printf("test");...提示出错,形参和局部变量一样,c语言的函数执行时形参先入栈,然后是eip,ebp等指针入栈,局部变量最后入栈。
  • 02.静态变量 形参

    2018-11-16 15:32:44
    形参的本质是一个名字,不占用内存空间,不是实际存在变量,是没有初值的,只有当执行函数的时候,实参才会将赋值给形参形参的值是根据实参的值而定的,而static型变量在编译时赋初值,即只赋初值一次,且占用内存...
  • (1) 形参的作用域为整个函数体,而普通(非静态)局部变量和静态局部变量的作用域为:从定义处到包含该变量定义的块的结束处。 (2) 形参由调用函数时所传递的实参初始化;而普通(非静态)局部变量和...
  • 参数又称参变量,在js中函数接收的变量分为形参和实参。实参是指实际参与js函数调用使用的具体数据。形参是指函数被调用时,接收实参值的变量。根据实际需要,形参可有可无,没有形参时,圆括号也不可省略。当出现多...
  • 形参与实参变量

    2018-04-19 11:18:59
    对于exchange与realexchange的关系与区别,这两个变量实际上只是在形参变量与实参变量值传递上
  • function 函数名(形参变量列表){ 函数体; return 返回值; } 调用函数 如何调用函数:var 变量=函数名(实参值列表); 什么是形参变量:专门接收函数执行时必需的数据的变量 为什么要使用形参变量:有些函数执行时,...
  • 一级指针做形参:首先一定要明白形参和你传递参数的那个实参是两个不同的变量,即使同名也还依然不同。二级指针做形参:二级指针也是传值,但是他指向的地址是个一维指针。
  • 形参:在定义函数阶段定义的参数称之为...实参和形参的绑定关系在函数调用时生效,函数调用结束后解除绑定关系(释放内存空间)位置参数:按照从左到右的顺序依次定义的参数称之为位置参数位置形参:在函数定义阶...
  • 传参即是实参的值赋给形参。对于基本类型的形参,在方法内部对形参的修改只会局限在方法内部,不会影响实参。 比如,给Calculator增加一个increase(int)方法: class Calculator { public int add(int a, ...
  • 形参、局部变量和静态局部变量的差别  从本质上说,三者均属于局部作用域中的变量,其中局部变量又可以分为普通(非静态)局部变量和静态局部变量。它们的差别: 作用域:形参的作用域为整个函数体;而普通(非...
  • 以前错误的认为,全局变量名、局部变量和形参名相同时,全局变量(也就是外部变量)被形参覆盖,形参被局部变量覆盖。 今天发现这样理解并不对。比如 function foo(num){ var num; console.log(num); } ...
  • 3、根据js在执行前所做的准备工作(执行上下文那节讲过):(函数将声明并赋值,变量和函数表达式只声明,值为undefined,this对象指向window对象)4、填充变量对象的顺序是:函数的形参 --&gt; 函数声明 --&...
  • 形参可以设置参数默认值,设置遵循从右至左原则例如:fun(x=0,y=1),fun(x,y=1),但不可以是fun(x=1,y)形参设置可以为数字字符串变量、元组字典等任意类型数据,元组形参是在变量名前加*,字典形参是在变量名前加**...
  • int myadd(int *a, int *b) //指针变量作为形参 { int sum; sum = *a + *b; /* 先找到a,b中存储的地址,然后根据地址找到地址所指向的空间,并把空间当中的值取出 */ return sum; } int main(void) ...
  • 我先把结论列出来:当成员变量和形参是指针,最好不要使用:成员变量(形参)这样的形式。因为你可以不是进行:成员变量 = 形参这个方向的赋值,你可能是执行:形参 = 成员变量这个方向的赋值。因为前提,它们都是指针...
  • 那么,在定义函数的时候,函数的形参变量可以接收实参变量传递过来的数据。所以,函数指针变量是一种变量类型,也可以作为函数的形参变量。程序测试例子如下: 程序运行结果如下: 可以看到,函数func1的...
  • 实参、形参和值传递 首先我们要知道什么是形参,什么是实参? 形参,顾名思义,形式上的参数,在定义函数时函数名后面括号里面的变量名称就是形参;而实参就是平常定义的变量;如void swap(int x,int y)int a=10...
  • Java变量形参,实参

    2017-12-14 21:03:37
    成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中,类成员变量也叫静态变量,存在于静态域内。 成员变量有默认初始化值。 成员变量的权限修饰符可以根据需要,选择任意一个。 局部变量 ...
  • 目录引用变量的说明:引用变量的格式:引用变量作为函数形参的好处 引用变量的说明: 1.引用的作用是给变量起别名,可以当做变量来用.只能在引用初始化的时候给引用变量赋值 2.引用的本质是弱化的指针,因为只能在引用...
  • 普通变量是直接传值 指针变量传递地址引用变量是隐式传地址,如void f(int &x),实际传递的是x的地址p,但是函数内部使用x时会自动变成*p void f(int &x) {x++}; 会变成 void f(int *p) {(*p)++}; ...
  • 成员函数的形参 与 成员变量重名

    千次阅读 2017-03-05 18:40:40
    成员函数的形参 与 成员变量重名 时 定义函数时该如何使用形参和成员变量class User { int a,b; public: calculate(int a,double b); };当定义函数calculate时,直接使用a,b代表的是形参(可以理解为一般程序中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 208,945
精华内容 83,578
关键字:

形参和形参变量