形参(parameter):形参(形式参数)是在函数定义中出现的参数,是一个虚拟参数,调用之前并没有给他分配内存,可以看作是一个占位符,在函数定义时没有实际的数值,只有在函数调用时才会接收到传递进来的数据;只是因为函数需要从别处传递数据,为了表示此数据,起了一个名字,是出于函数形式上的考虑,故称之为形参。

实参(argument):实参(实际参数)是在函数中实际出现的参数,实参的值可以是常量、变量、表达式、类等,实参必须要有确定的值。

区别:

  1. 性质不同:

形参是一个名字,本身不占内存,只有在函数调用时才会分配内存;

实参是一个变量,在定义时就已分配内存地址。

  1. 作用域不同:

形参在函数定义时出现,在函数体内可以使用,离开该函数体则不能使用;

实参出现在主调函数中,进入被调函数时不能使用。

  1. 生命周期不同:

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放分配的内存单元,除了重新调用,否则不能再重新使用形参。

实参:全局变量:程序运行期一直存在,从程序开始到结束。

局部变量:随着函数的结束,即被销毁

联系:

  1. 含有形参的函数在调用时,括号中的数据是实参,用来将实参的数据传递给形参,所以在参数传递之前,要对实参进行赋值;需要注意的是:形参与实参之间的值传递并不会改变实参的值,地址传递会改变实参的值。

  1. 在函数调用时,传递给被调函数的实参,在数量、数据类型上必须与形参保持一致,否则会出现“类型不匹配的错误。

例子:

从上面的例子也可以看出来,对形参进行的操作只在被调函数中起作用,并不能改变与其同名的实参的值,所以实参与形参可以同名,传递给被调函数的实参必须有确定的值,所以必须先赋值,再传递给形参,传递给形参的可以是数值也可以是表达式。

形参与实参的主要区别相关推荐

  1. C/C++函数形参传实参时值传递、指针传递、引用传递的区别

    值传递:形参是实参的副本(复制.拷贝),形参值的改变不会影响实参的值,这种方式是很常见的. 指针传递:形参是指针类型,形参作指针运算后指向的就是实参,所以会影响实参的值.这种方式也是很常见的. 引用传 ...

  2. 1.5 成员方法的声明和调用,形参,实参

    声明成员方法 声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息.类的各种功能操作都是用方法来实现的,属性只不过提供了相应的数据.一个完整的方法通常包括方法名称.方 ...

  3. 【实例讲解】JS中形参、实参可以不一致

    function myFunction() { var x=5; return x; } 补充:JS中带返回值的函数,在函数定义时不体现 //正文 1.实参与形参个数可以有偏差,不会因为参数不统一而错 ...

  4. python形参中传入两个实参_认识Python函数的两个概念:形参与实参(16)

    我们先用Python编写一个比较两个数字大小的函数pMax(). def pMax(a,b): '''比较两个数字的大小,并返回较大的数字''' if a < b: print("{0 ...

  5. 形参与实参, 值传递与引用传递, ref参数与out参数的区别和联系?

    一. 形参与实参 1.先来一例子: fun(int a) {........} Main () {   int b=0;   fun(b); } 其中,a是形参,b是实参. 2.再看理论定义 形参出现 ...

  6. C++编程基础二 03-const形参与实参

    1 // C++函数和类 03-const形参与实参.cpp: 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include < ...

  7. c语言实参和形参占用存储单元_必须知道的C语言知识细节:函数形参和实参的区别...

    当你选择了一种语言,意味着你还选择了一组技术.一个社区.--Joshua Bloch C语言中函数形参和实参是十分重要的概念,初学者很容易混淆. 形参:顾名思义,形式参数,仅仅是声明了参数的类型和参数 ...

  8. 《C++ Primer 第五版》(第6.1~6.3节) 函数形参和实参传递,可变参数列表和函数返回值

    1.函数形参和实参传递问题 函数参数传递有两种:值传递(变量,指针),引用传递(使用别名). 在形参和实参的传递过程中,牵涉到大的类类型对象.容器类型对象或者不支持拷贝操作的对象时,不适合采用值传递, ...

  9. python实参_python的形参和实参

    Python中函数参数的传递是通过"赋值"来传递的.但这条规则只回答了函数参数传递的"战略问题",并没有回答"战术问题",也就说没有回答怎么 ...

最新文章

  1. 【FPGA】SRIO IP核系统介绍之事务类型(Transaction)
  2. 【Windows 逆向】Cheat Engine 数据挖掘搜索方法和技巧 ( 数值类型选择 | 字符串数值类型选择 | 全部数值类型模糊选择 )
  3. 输出联系变化的数字seq
  4. Java时区处理初学者指南
  5. MySQL自用脚本(不定期更新)
  6. mysql innodb 报错_mysql报错1286 Unknown storage engine 'InnoDB'
  7. react新特性实例详解(memo、lazy、suspense、hooks)
  8. Momentum动量法
  9. android 蓝牙转串口_android自带的示例程序 BluetoothChat 变蓝牙串口助手
  10. verilog实现设计3*8译码器
  11. 蓝牙音频编码简介 - SBC、AAC、AptX、LDAC、LHDC
  12. 获取微信聊天窗口的小程序入口参数
  13. MySQL之between and 临界值问题
  14. Python爬取百度翻译及有道翻译
  15. 如何使得一个div在页面居中显示
  16. Python学习,第七课(灵活使用Frame,让布局更舒适)
  17. 安卓 SDK 开发使用 VirtualAPK 实现插件化
  18. 锦尚中国 授权文件解密
  19. AJAX基础入门实例教程(含代码)
  20. 软考信息系统监理师:2016年4月1日作业

热门文章

  1. 李俊“从良”碰壁,黑客的路有多长
  2. 使用BURP时,ca证书已经安装,谷歌浏览器总是提示“您的连接不是私密连接”或者是设置一些正常,就是抓不到数据包,网页可以正常打开,BURP拦截不到数据包。火狐浏览器一切正常。
  3. 关于ASMM和AMM
  4. C/C++与Python的语法差异
  5. Eclipse各版本下载地址
  6. phpcms 点赞_Ajax实现phpcms 点赞功能(图文教程)
  7. redis cluster C 客户端
  8. MySQL如果不存在一个表则创建
  9. HTML(一):行级标签、块级标签、其他标签
  10. 不管过去如何,未来我们都要奋力前行!