精华内容
下载资源
问答
  • C语言形参和实参

    万次阅读 多人点赞 2017-09-05 21:44:50
    形式参数(形参):定义函数名函数体时需要用的参数,目的是用来接收调用该函数时传递的参数。 实际参数(实参):传递给被调用函数的值。 通俗的来讲,形参就像物理计算中的公式中的符号,比如Ω,A,V等,而实参...

    形式参数(形参):定义函数名和函数体时需要用的参数,目的是用来接收调用该函数时传递的参数。

    实际参数(实参):传递给被调用函数的值。

    通俗的来讲,形参就像物理计算中的公式中的符号,比如Ω,A,V等,而实参就是在计算中的实际的数值。调用过程就是实现形参与实参的结合,把实参的值通过调用传递给形参,相当于把具体的值代入公式进行计算。

     

    形式参数(形参)

    实际参数(实参)

    区别1

    形参只能是变量,在被定义的函数中,必须指定形参的类型。

    实参可以是常量、变量、表达式、函数等,

    区别2

    没有确定的值

    无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

    区别3

    形参变量在未出现函数调用时,并不占用内存,只在调用时才占用。调用结束后,将释放内存。

    开辟内存存储数据

    联系

    形参和实参的类型应相同或赋值兼容


    C语言要求函数的实参要有确定的值,在函数调用时给形参分配相应的内存单元,同时将实参的“值”赋(相当于拷贝)给形参,实现数据从实参到形参的传递(‘值传递’方式)。因为是复制,所以在操作副本(形参)过程中不会影响到原本(实参)内容。例如下面这个程序。

    #include<stdio.h>
    int main()
    {
    void exchange(int a,int b);//函数声明
    int a=5,b=3;
    exchange(a,b);
    printf("主函数a=%d,b=%d\n",a,b);
    return 0;
    }
    void exchange(int a,int b)
    {
    int t;
    t=a;
    a=b;
    b=t;
    printf("函数中a=%d,b=%d\n",a,b);
    }

    结果:

    通过这个程序我们看出在对形参进行操作的过程中,实参的值未发生变化。





    展开全文
  • C语言中函数形参实参的区别

    千次阅读 多人点赞 2019-06-12 10:47:13
    众所周知一个函数有两种参数,即形参和实参。那么究竟什么是形参什么是实参呢? 形参:在定义函数时指定的参数,在未出现函数调用时,他们...注意:形参和实参实际上占用的是两份不同的存储单元形参和实参之...

    众所周知一个函数有两种参数,即形参和实参。那么究竟什么是形参什么是实参呢?

    形参:在定义函数时指定的参数,在未出现函数调用时,他们并不占用内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配内存单元。在函数调用结束后,形参所占用的内存单元也被释放。

    实参:即你调用函数时传递的参数。实参可以是常量、变量、表达式。

    注意:形参和实参实际上占用的是两份不同的存储单元。

     形参和实参之间的传递

    在c语言中,实参与形参的数据传递是“值传递”,单向传递,只能由实参传给形参,不能由形参传递给实参。形参的值如果发生改变,并不会改变主调函数的实参的值。

    形参与实参的之间的传递分类

    1、按值传递(实形无联系)

    按传递就是平常编程中经常用到的,定义一个基本数据类型的变量,在调用某函数时把该变量作为函数的实参传递给函数。这种传递方式采用的是单向值传递,实形无联系,形参改变不影响实参。

    2、按地址传递(通过操作形参可能会改变实参)

    按地址传递主要出现在函数参数是指针变量、数组等的时候。

    注意:

    实质上用指针做函数参数的情况下,在调用函数时,将实参变量的传递给形参变量,采取的依然是单向值传递。如果在被调函数中只是单纯改变了形参指针变量的值,在函数调用结束后这些形参被销毁,是不会影响调用函数时传入实参指针变量值。

    只有当你在被调函数中通过操作形参指针变量,去改变了指针指向变量的值时,才可以改变实参指针变量所指向变量的值。也只有这种情况下形参改变才可能影响实参。

    实质上,指针操作起到了偷梁换柱的作用。

    关于指针请自行了解。

     

     

    展开全文
  • java中的形参和实参

    千次阅读 2018-04-16 18:33:57
    形参 形式参数 ...形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 区别: 形参变量只有在被调用时才分...

    形参

    • 形式参数
    • 形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用

    实参

    • 实际参数
    • 拥有明确的值,传递给被调用方法的值
    • 实参出现在主调函数中,进入被调函数后,实参变量也不能使用

    功能

    • 形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

    区别:

    1. 形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量
    2. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值
    3. 实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误
    4. 函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化
    5. 当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变
    6. 如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值

    总结:

    1. 形参只在函数内部有效
    2. 当使用实参传值时,实参必须有自己明确的值即==初始化==
    3. 若将实参的值传递给形参时,形参和实参的数据类型等保持一致
    4. 数据传送类型是单向的,即实参到形参,且不可倒置
    5. ==指针类型变量:存储变量的地址== 地址改变,值改变

    参考博文:JAVA-形参和实参的区别

    img

    展开全文
  • 被调用函数的形参只有函数被调用时才会临时分配存储单元,一旦调用结束占用的内存便会被释放 值传递地址传递,传递的都是实参的一个拷贝 C语言中实参和形参之间的数据传递是单向的“值传递”,单向传递,只能由...
  • 函数调用下形参和实参的内存分配

    千次阅读 2013-04-15 21:45:43
    作为一个接触C/C++不久的小菜鸟,常常对函数形参和实参的内存分配调用很费解,现就最近心得总结如下; 函数形参和 实参具有以下特点: #include int Max(int x,int y) {  return x>y? x:y; } void main() ...

       作为一个接触C/C++不久的小菜鸟,常常对函数形参和实参的内存分配和调用很费解,现就最近心得总结如下;

    函数形参和 实参具有以下特点

    #include<iostream.h>

    int Max(int x,int y)

    {

       return x>y? x:y;

    }

    void main()

    {

       cout<<"Max is..."<<Max(4,8)<<endl;  //函数调用

    }

    1,形参变量只有在被调用时才分配内存单元,在调用结束后,即可释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参那变量。

    2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便吧这些值传送给形参。因此,预先用赋值、输入等方法是实参获得确定值。

    3、实参和形参在数量上、类型上、顺序上应严格一致,否则会发生类型不匹配的错误;

    4、函数调用中发生的数据传送是单向的。即只能把实参传送给形参,而不能把形参的值传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会发生改变。

     形参只在这个函数执行的时候才会被分配内存,当函数执行完毕后分配的内存会被释放。至于理由……函数的参数属于局部变量,如果一开始就分配的话,别的地方也能访问修改,数据就不确定了。
    另外,函数的形参实际是:调用此函数前,将实参压入堆栈,然后跳转到函数的地址执行。函数执行完跳回去时,堆栈弹出,内存释放。

    当一个函数的运行期间调用另一个函数时,在运行被调函数之前,系统需要完成三件事:

       1、将所有的实参、返回地址等信息传递给被调函数保存。

       2、为被调函数的局部变量(包括形参)分配内存空间;

       3、将控制转移到被调函数的入口;



    从被调函数返回主调函数之前,系统也要完成三件事

        1、保存被调函数的返回结果;

         2、释放被调函数所占的存储空间;

         3、依照被调函数返回的地址将控制转移到调用函数;

    当有多个函数调用时,按照“后调用先返回”的原则,上述函数之间的信息传递和控制转移必须借助“栈”来实现,机系统整个程序运行时所需的数据空间安排在一个栈中,每当调用一个函数时,就在栈顶分配一个存储区,进行压栈操作,每当一个函数退出时,就释放它的存储区,执行出栈操作,当前运行的函数永远就在栈顶位置。


    具体内存分配细解可参看<<C深度剖析>>


    那么在什么情况下不给形参和实参分配内存大小呢?????

    Windows中以__fastcall调用的时候是可以的,因为前两个参数不被放到堆栈中传入,而是传到寄存器中,这样可以不占用内存。


    c方式的_cdecl调用参数必须要压栈,所以不占内存是不现实的。






       

    展开全文
  • 形参和实参的区别

    2020-03-22 14:14:10
    2、形参:不是实际存在变量,又称虚拟变量(在被调用时才分配内存单元) 二、目的 1、实参:可以是常量、变量或表达式, 无论实参是何种类型的量,在进行函数调用时,都必须具有确定的值, 以便把这些值传送给形参。...
  • 实参和其对应的形参占用独立的存储单元

    万次阅读 多人点赞 2014-04-07 20:59:04
    关于函数形参的问题? 以下正确的说法是:在C语言中( )。 A. 实参和其对应的形参各占用独立的存储... 只有当实参和与其对应的形参同名时才共占用存储单元 D. 形参是虚拟的,不占用存储单元 答案:A
  • 只有当实参和与其对应的形参同名时才共占用存储单元 D. 形参是虚拟的,不占用存储单元 答案:A 这道题老是记不住,特此发个博文。 实参和形参是各占独立存储空间,函数调用过程中,实参形参拷贝复制值。实参是个...
  • 关于函数调用时形参实参的情况

    千次阅读 2020-03-01 00:46:18
    形参只在调用过程中占用存储单元形参定义时必须指定类型! 2.实参是常量。变量或者表达式!要与形参类型一致!而且实参要有确定的值,占用储存单元,在调用过程中实参将值赋给形参! 3.C中实参形参数据传递时时...
  • c语言的形参和实参传递的区别

    千次阅读 多人点赞 2019-02-28 10:52:49
    参数传递,是在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理返回的...被调用函数的形参只有函数被调用时才会临时分配存储单元,一旦调用结束占用的内存便会被释放 值...
  • 形参实参之间的值传递

    千次阅读 2013-10-09 11:45:00
    C语言中,参数的传递方式是“单向值传递”,形参和实参变量各自有不同的存储单元,被调用函数中的形参变量值的变化不会影响实参变量值。 举个例子 #include&lt;stdio.h&gt; void swap(int x,int y)...
  • char p是声明一个字符类型变量p,char * p1是声明一个字符类型的指针变量p1,那么char ** p2就相当与给char类型的指针变量再声明一个指针.(2级指针) ...//则p1=1000,*p1=p='a',p1就p关联了;假设p1被放在2
  • 1、关于形参实参的区别与理解

    千次阅读 多人点赞 2019-03-09 17:53:13
    在弄清形参实参的时候,遇到了这样一段代码,表示不能理解,网上找了一下,摘录了原文解释 int a=1; int &b = a; 这是C++的引用,引用只能在定义的时候被赋值,这个定义的意思就是给a取了一个别名叫b,...
  • 以下正确的说法是( )。在C语言中: A.实参和与其对应的形参各占用...只有当实参和与其对应的形参同名时才共占用存储单元D.形参是虚拟的,不占用存储单元最佳答案二级知识专家你的偏见2021-01-26 22:54选A。函数...
  • 实参和形参占用不同的内存单元,即使同名互不影响。 在被定义的函数中,必须指定形参的类型 实参形参的类型应相同或赋值兼容。 良好的程序设计习惯:为了使程序具有良好的可读性并减少出错,凡不要求...
  • 2.形参实参 形式参数(简称“形参”) 在定义函数时函数名后面括号中的变量称为“形式参数”。 实际参数(简称“实参”) 在主调函数中调用被调函数时,函数名后面括号中的参数称为“实际参数”。实际参数可以...
  • 相关问题函数,函数,形参,程序,运行,速度,函数,中,变量,形参,变量,形参,时,存储,空间,中,说法,形参,实参,结构,数组,名,形参,结构,指针,地址,实参,形参,形参,对象,数据,类型,形参,错,声明,形式,函数,类型,运算符,形参,...
  • 答疑:【解析】声明静态局部变量:函数调用结束后,其占用存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数 fun 中的变量 im均为静态局部变量。所以第一次调用 fun 函数,...
  • 20180513 实参 形参

    2018-05-13 21:06:00
    只有当实参和与其对应的形象同名时才共占用存储单元 形参是虚拟的,不占用存储单元正确答案:A 错选:D 1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在...
  • 实参形参

    2019-05-20 22:08:57
    所谓形参即在定义函数中出现,在未出现函数调用时,他们并不占用内存中的存储单元;当然在发生函数调用时,形参被临时分配内存单元,当然一旦调用结束之后就被释放。 实参实参是在利用调用函数时所包含的变量。...
  • C#-实参和形参

    千次阅读 热门讨论 2018-05-19 11:43:55
    无论实参是何种类型的量,在进行函数调用时,必须有确定的值,以便把这些值传送给形参,因此应预先赋值,输入等方法是参数获得确定值形参形参不是实际存在的变量,是在定义函数名称函数体的时候使用的参数,目的是...
  • Python中的实参和形参

    千次阅读 2017-08-18 16:18:26
    print(name) def number(i): i=1 print(i) i=0 number(i) print(i) 实验结果: [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] liusen liyanmeng 1 0 实参是否改变主要取决于变量是否是可变的,可变的参数传值过去的时候实参就...
  • 并将实参的值复制到形参中调用结束形参单元被释放实参单元仍保留并维持原值特点形参实参占用不同的内存单元单向传递实参实参形参形参55地址EF...作为参数传递给形参特点形参实参占用同样的存储单元双向传递实参
  • 2、访问内存变量时,内存变量地址该地址下的内存变量存储单元中的数据,在存储访问上是如何操作实现的? 3、讨论直接访问与间接访问内存变量数据方式有何不同? 4、讨论如何获得已定义变量的地址,又是如何按该...
  • 8.3通过指针引用数组8.3.1数组元素的指针一个变量有地址,一个数组包含若干个元素,每个数组元素都在内存中占用储存单元,它们都有相对应的地址。指针变量可以指向变量,也可以指向数组元素。数组元素的指针就是数组...
  • 存储单元中,即形参和实参分别占用不同的存储单元,这种传递方式称为 参数的“值传递函数的传值调用” 值传递的特点 主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束过后, 形参存储单元被...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,139
精华内容 3,255
关键字:

形参和实参占用存储单元