形参与实参的主要区别
形参(parameter):形参(形式参数)是在函数定义中出现的参数,是一个虚拟参数,调用之前并没有给他分配内存,可以看作是一个占位符,在函数定义时没有实际的数值,只有在函数调用时才会接收到传递进来的数据;只是因为函数需要从别处传递数据,为了表示此数据,起了一个名字,是出于函数形式上的考虑,故称之为形参。
实参(argument):实参(实际参数)是在函数中实际出现的参数,实参的值可以是常量、变量、表达式、类等,实参必须要有确定的值。
区别:
性质不同:
形参是一个名字,本身不占内存,只有在函数调用时才会分配内存;
实参是一个变量,在定义时就已分配内存地址。
作用域不同:
形参在函数定义时出现,在函数体内可以使用,离开该函数体则不能使用;
实参出现在主调函数中,进入被调函数时不能使用。
生命周期不同:
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放分配的内存单元,除了重新调用,否则不能再重新使用形参。
实参:全局变量:程序运行期一直存在,从程序开始到结束。
局部变量:随着函数的结束,即被销毁
联系:
含有形参的函数在调用时,括号中的数据是实参,用来将实参的数据传递给形参,所以在参数传递之前,要对实参进行赋值;需要注意的是:形参与实参之间的值传递并不会改变实参的值,地址传递会改变实参的值。
在函数调用时,传递给被调函数的实参,在数量、数据类型上必须与形参保持一致,否则会出现“类型不匹配的错误。
例子:
从上面的例子也可以看出来,对形参进行的操作只在被调函数中起作用,并不能改变与其同名的实参的值,所以实参与形参可以同名,传递给被调函数的实参必须有确定的值,所以必须先赋值,再传递给形参,传递给形参的可以是数值也可以是表达式。
形参与实参的主要区别相关推荐
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
值传递:形参是实参的副本(复制.拷贝),形参值的改变不会影响实参的值,这种方式是很常见的. 指针传递:形参是指针类型,形参作指针运算后指向的就是实参,所以会影响实参的值.这种方式也是很常见的. 引用传 ...
- 1.5 成员方法的声明和调用,形参,实参
声明成员方法 声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息.类的各种功能操作都是用方法来实现的,属性只不过提供了相应的数据.一个完整的方法通常包括方法名称.方 ...
- 【实例讲解】JS中形参、实参可以不一致
function myFunction() { var x=5; return x; } 补充:JS中带返回值的函数,在函数定义时不体现 //正文 1.实参与形参个数可以有偏差,不会因为参数不统一而错 ...
- python形参中传入两个实参_认识Python函数的两个概念:形参与实参(16)
我们先用Python编写一个比较两个数字大小的函数pMax(). def pMax(a,b): '''比较两个数字的大小,并返回较大的数字''' if a < b: print("{0 ...
- 形参与实参, 值传递与引用传递, ref参数与out参数的区别和联系?
一. 形参与实参 1.先来一例子: fun(int a) {........} Main () { int b=0; fun(b); } 其中,a是形参,b是实参. 2.再看理论定义 形参出现 ...
- C++编程基础二 03-const形参与实参
1 // C++函数和类 03-const形参与实参.cpp: 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include < ...
- c语言实参和形参占用存储单元_必须知道的C语言知识细节:函数形参和实参的区别...
当你选择了一种语言,意味着你还选择了一组技术.一个社区.--Joshua Bloch C语言中函数形参和实参是十分重要的概念,初学者很容易混淆. 形参:顾名思义,形式参数,仅仅是声明了参数的类型和参数 ...
- 《C++ Primer 第五版》(第6.1~6.3节) 函数形参和实参传递,可变参数列表和函数返回值
1.函数形参和实参传递问题 函数参数传递有两种:值传递(变量,指针),引用传递(使用别名). 在形参和实参的传递过程中,牵涉到大的类类型对象.容器类型对象或者不支持拷贝操作的对象时,不适合采用值传递, ...
- python实参_python的形参和实参
Python中函数参数的传递是通过"赋值"来传递的.但这条规则只回答了函数参数传递的"战略问题",并没有回答"战术问题",也就说没有回答怎么 ...
最新文章
- 【FPGA】SRIO IP核系统介绍之事务类型(Transaction)
- 【Windows 逆向】Cheat Engine 数据挖掘搜索方法和技巧 ( 数值类型选择 | 字符串数值类型选择 | 全部数值类型模糊选择 )
- 输出联系变化的数字seq
- Java时区处理初学者指南
- MySQL自用脚本(不定期更新)
- mysql innodb 报错_mysql报错1286 Unknown storage engine 'InnoDB'
- react新特性实例详解(memo、lazy、suspense、hooks)
- Momentum动量法
- android 蓝牙转串口_android自带的示例程序 BluetoothChat 变蓝牙串口助手
- verilog实现设计3*8译码器
- 蓝牙音频编码简介 - SBC、AAC、AptX、LDAC、LHDC
- 获取微信聊天窗口的小程序入口参数
- MySQL之between and 临界值问题
- Python爬取百度翻译及有道翻译
- 如何使得一个div在页面居中显示
- Python学习,第七课(灵活使用Frame,让布局更舒适)
- 安卓 SDK 开发使用 VirtualAPK 实现插件化
- 锦尚中国 授权文件解密
- AJAX基础入门实例教程(含代码)
- 软考信息系统监理师:2016年4月1日作业
热门文章
- 李俊“从良”碰壁,黑客的路有多长
- 使用BURP时,ca证书已经安装,谷歌浏览器总是提示“您的连接不是私密连接”或者是设置一些正常,就是抓不到数据包,网页可以正常打开,BURP拦截不到数据包。火狐浏览器一切正常。
- 关于ASMM和AMM
- C/C++与Python的语法差异
- Eclipse各版本下载地址
- phpcms 点赞_Ajax实现phpcms 点赞功能(图文教程)
- redis cluster C 客户端
- MySQL如果不存在一个表则创建
- HTML(一):行级标签、块级标签、其他标签
- 不管过去如何,未来我们都要奋力前行!