精华内容
下载资源
问答
  • 用实际代码的形式阐述了ByValByRef的区别以及形参和实参的区别。 源码在VB.net 2010下调试通过。 欢迎指正!
  • vb与vc形参实参(笔记)

    千次阅读 2010-09-21 11:49:00
    猛然间玩了1年多的VB,倒是把C的内容丢了不少,很多基本功都生疏了。最近CSDN上看了个帖子,涉及到形参实参的问题,竟然把我都给搞糊涂了。... 在VB中,区别形参和实参的办法很简单,只要看参数定义前边有没有 ByVal

    猛然间玩了1年多的VB,倒是把C的内容丢了不少,很多基本功都生疏了。最近CSDN上看了个帖子,涉及到形参实参的问题,竟然把我都给搞糊涂了。为了加深对编程语言概念的印象,特利用VB与C中对形参实参调用的不同点,来巩固一下基本功。本文档所述均为我自己的体会,许多内容和说法并非教材定义,故也许与标准的定义有出入,只要不影响理解就行。

      VB与C编译方式的不同导致对函数调用时形参实参定义方式有很大不同(其实是完全不同,并且没有可比性)。

      在VB中,区别形参和实参的办法很简单,只要看参数定义前边有没有 ByVal 标识符。没有ByVal标识的即为实参,有标识的为形参。

    如:Function MyFun(Long a, ByVal Long b)

    其中,参数 a 为实参,b则为形参。

      但是在C中,形参和实参的操作就不这么简单了。C对函数参数的调用一直是以“拷贝副本”(姑且这么说)的方式进行的,无论你怎样去设置函数参数,在函数内部使用的参数都是调用前原参数的一个副本。换句话说,原参数在被函数调用时,都先将此刻的原参数值拷贝给函数中对应的新参数,函数内部只使用新参数进行操作,即使新参数的值被改变了,也不会影响原参数。再换句话说,C中函数总是以形参的方式传递参数的。

      那么,在C中如何实现实参呢?也就是说如何得到函数对参数的处理结果呢?这就靠C中独特的指针概念来解决了。所谓指针就是指向内存某块区域的标记。倘若我们定义一个int类型变量和一个指针,并将指针指向一个int类型变量的内存,即

    int a;

    int *q=&a; //此时 q为变量a的内存的地址。

    之后,我们在一个函数中想以实参的方式调用变量a,那么我们可以将变量a的地址传递给函数,即

    通过,上边的例子,我们了解到C中函数如何引用参数的,并利用指针实现了实参的传递。

    下边引用CSDN上一个哥们如何错误的使用实参的例子,并给出一个正确的调用方式,以求真理。

     

      上边2个例子,很好的诠释了C函数如何引用参数的和如何处理形参与实参。

    理解这个例子的关键就是那个 int **p 

    至于怎么理解,我不说了,反正我会

    展开全文
  • 用代码的形式阐述了ByValByRef的区别以及形参和实参的区别。源码在VB.net 2010下调试通过。 欢迎指正!
  • VB中形参和实参这两个概念,我不知道在C#中有没有。 但是在参数前加ref out 或不加,其效果和VB中形参和实参一样。 一个实例搞定一切 using System; using System.Collections.Generic; using System....

    在VB中有形参和实参这两个概念,我不知道在C#中有没有。

    但是在参数前加ref out 或不加,其效果和VB中的形参和实参一样。

    一个实例搞定一切

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                int i=1;
                int j = 1;
                Console.WriteLine("执行前   i={0}   j={1}", i, j);
                Sum1(ref i,j);
                Console.WriteLine("执行后   i={0}   j={1}", i, j);
                Console.WriteLine("--------------------");
    
                int k = 1;
                int l = 1;
                Console.WriteLine("执行前   k={0}   l={1}", k, l);
                Sum2(out k, l);
                Console.WriteLine("执行后   k={0}   l={1}", k, l);
                Console.WriteLine("--------------------");
                
                Console.ReadKey();
    
            }
            
            static void  Sum1(ref int i,  int j)
            {
                i++;            
            }
            static void Sum2( out int k, int l)
            {
                k = 6;//必须要有一个明确的赋值运算,且要在k变量在使用前赋值
            }
        }
    }
    


     

    展开全文
  • := 运算符在VB中是怎么给函数传参数的?它和函数的实参和形参有什么区别和联系?
  • VB中的ByValByRef的区别

    千次阅读 2017-07-21 11:59:59
    ByVal是按值传递,形参的改变不会造成实参的改变。ByRef是按地址传递,形参的改变会造成实参的改变。这就像是其它语言的引用传递一样,如php的 &$args举个例子:Module Module1 Sub Main() Dim i As...
    ByVal是按值传递,形参的改变不会造成实参的改变。

    ByRef是按地址传递,形参的改变会造成实参的改变。


    这就像是其它语言中的引用传递一样,如php中的 &$args


    举个例子:

    Module Module1
    
    
        Sub Main()
            Dim i As Integer = 10
            value1(i)
    
            'ref1(i)
    
            default1(i)
    
    
            Console.WriteLine(i)
        End Sub
    
        Sub value1(ByVal i As Integer)
            i = 5
            Console.WriteLine(i)
        End Sub
    
        Sub ref1(ByRef i As Integer)
            i = 15
        End Sub
    
        Sub default1(i As Integer)
            i = 20
        End Sub
    
    End Module
    
    'value输出的结果i=10   'ref1输出的结果i=15   '如果不指定,默认是ByVal

    展开全文
  • VB传值传地址问题

    千次阅读 2015-10-17 19:43:29
    参数分为形参和实参形参指的是过程名称中用括号括起来的参数, 实参指的的是调用过程,向过程传递的数据参数。 可以理解为:形参相当于公式的自变量,实参相当于使用公式时代入自变量的具体数值。 ...

    vba 传递参数值时,分为ByvalByref
    参数分为形参实参
    形参指的是过程名称中用括号括起来的参数,
    实参指的的是调用过程中,向过程传递的数据参数。
    可以理解为:形参相当于公式中的自变量,实参相当于使用公式时代入自变量中的具体数值。
    Byref,地址传递参数,传递的是地址,过程操作的是变量的地址
    Byval,值传递参数,将变量的内容复制了一遍,过程操作的是另外一个变量,只不过这两个变量名称一样,值一样


    值传递,相当于传的是一个副本,对于副本的操作不影响正本
    地址传递,相当于是一个共有变量,传的是地址,该变量可以在过程中改变。

    值传递只是将变量的内容复制一份而已,函数进行操作的其实是另一个变量,只是另一个变量的值和传递的变量值是相同的。
    而地址传递是直接把变量的地址传递给函数,这时函数是直接对原来的变量进行操作的。所以值会变化。


    举例说吧:值传递就相当于克隆了一个同样的变量,操作的是克隆出来的那个,原来的变量没有变化,但是地址传递是直接对原来的变量进行操作,没有克隆新的变量

    展开全文
  • VB过程使用的参数分为实参和形参,简单的讲,在过程定义给定的参数是形参,而在过程调用语句给定的参数是实参。当调用一个有参数的过程时,形参和实参逐一匹配传递,根据传递方式不同,可分为按值和按地址两种...
  • 我们称实参 <br />在调用时,我们要将实参的值传递给形参,这样过程才能拿这些数据参与计算并实现一些功能 那么在传递的过程,就存在这两种传递方式 传值时(ByVal),是先给形参
  • 按值传递(ByVal):形参和实参占有不同的存储空间,调用过程改变了形参变量的值,实参的值不会受影响。调用结束后,实参还是调用之前的值, Private Sub Command1_Click() Dim x As Integer x =
  • 参数分为实参和形参。方法名括号里面的参数是形参,调用方法或者函数的括号里面的是实参。vb中参数是什么vb中参数是在函数(或过程)中,用于决定流程、或参与计算、或决定样式模式等的量。参数分为虚参和实参。在定义...
  • ByVal是按值传递 就是不改变地址里的变量值 而ByRef是改变地址里的变量值的 <br />ByVal传递的只是一个值 向一个地址传递一个值进去 而ByRef的形参和实参共用一个储存单元 因为他们是...
  • Java的方法

    2019-09-29 12:47:37
    Java方法也分为静态方法实例方法。 修饰符 返回值类型 方法...我们以前学delphi,vb,c的时候都有学形参和实参,传值传引用。 说实参形参了传值了传引用了容易让人晕头转向的。就好像学数组的时候我说内存...
  • 我们以前学delphi,vb,c的时候都有学形参和实参,传值传引用。说实参形参了传值了传引用了容易让人晕头转向的。就好像学数组的时候我说内存存储的位置栈堆一样,看不见摸不着,很抽象的...
  • vb6.0第五课

    2019-10-21 16:13:43
    VB中传递参数有两种方式:按值传递、按地址传递。其中按地址传递,又称为“引用”。 1、按值传递参数 按值传递使用Byval定义参数。使用时,程序为形参在内存中临时分配一个内存单元,并将实参的值传递到这个内存...
  • Byval Byref的区别

    千次阅读 2013-07-22 21:25:22
    VB中,提高过程和和函数,一定...在这里首先要明白实参和形参。举个例子吧: 假设定义一个过程: Sub Employee(Num As String,Name As String,Age As Integer)  ——>形式参数表 则调用这一个过程: Call Emplo
  • VB中形参声明有两种方式,一种是ByVal,一种是ByRef,如果是ByVal则在传递参数时将实参的一个拷贝传递给子程序,子程序对参数的修改不会影响原有参数。如果是ByRef,则将实参的指针传递给子程序,子程序对参数的修改...
  • C++的学习心得

    2015-09-10 16:33:00
    跳过了c语言,VB的学习,在很多方面我们掌握的并不是特别好,在这几种语言,几乎有时候会产生混淆,通过做大量的c++的题目感觉在题目应用的最多的就是数组、指针、对类的应用以及对函数的实参和形参的调用。...
  • VB程序设计综合复习题 1、叙述Visual Basic的特点。 2、当窗体上有三个文本框一个命令按钮,若程序运行时,焦点定位在第三个文本框(Text3)处,应对何控件的什么属性进行何种设置? 3、若要对窗体上的三个文本框...
  • 传值传址

    2020-03-27 16:07:33
    vb中调用函数或过程时,传递参数有两种方式:传址传值。其中VB默认为传址方式,关键字ByRef一般可以省略。 ByRef a As Integer:表示参数a以传址方式传递给函数或过程 Byval a As Integer:表示参数a以传值方式...
  • 本书延续了Ivor Horton讲解编程语言的独特方法,从中读者可以学习Visual C++ 2005的基础知识,并全面掌握在MFCWindows Forms访问数据源的技术。此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为C++...
  • 5.6.1 形参和实参 88 5.6.2 按值传递 89 5.6.3 按地址传递 90 5.6.4 数组作为传递参数 91 5.6.5 对象参数 93 5.6.6 可选参数与可变参数 93 5.7 递归调用 96 第6章 面向对象编程基础 99 6.1 类 99 6.1.1 类...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    invokeByObject.java 对象实参传递示例程序 invokeByValue.java 传值调用示例程序 invokeMethod.java 同一个类调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法...

空空如也

空空如也

1 2
收藏数 24
精华内容 9
关键字:

vb中实参和形参